Hi
Now some time to write.
Here you have your Iss5 schema attached.
Now I will tell you what I think, and if it makes sense for you, let's proceed.
The QL in the manage of the diferent modules uses to couple of buses. The CPU use its ADDR/DATA bus, and the RAM memory together with ULA ZX8302, ZX8301 (video), IC24 (keyboard, MDVs and others) uses theirs ADD/DATA buses.
If we pay attention we see that the memory belongs to the ADD bus labeled as DAn, and DATA bus labeled as DBn.
After you checked IC21, you confirmed that have activity on the CPU side of the data, but not in the data side of the memory.
It doesn't mean that IC21 is faulty yet. Since IC24, IC23 and IC22 also are implied.
About ADD bus, you may want to check IC20 and IC19, A and B sides. In order to make it easier, you can check it on the ZX8301 pins, that if there are not signal it doesn't mean that ULA is faulty, because the bus is shared with other parts.
All of this more than tell us what is faulty, is telling what is NOT wrong. Because you sometimes have video output, sometimes not. What happened to me in similar results than yours, doesn't mean would be the same issue than yours. So let's go step by step (unless you want to just go ahead directly and replace all IC RAMs till it start to work, what is fine too, that is another method that will work if only RAM ICs are involved).
In the map above you can see what I mean.
It is specially important to check IC21 OE' signal, that activate this interface between CPU Data bus and RAM Data bus. As you can see, if this signal is not activated (negative logic so low == Activated) you won't have any signal there (data lines). Also I would recommend to check CAS0L and CAS1L. For your commodity on ZX8301 (and again, if there fail, doesn't mean that ULA is wrong yet).
A RAM IC may fail in different ways and we don't know how is going yet. Full open? full short? partially working? Some data lines? some add lines?.
To do it a little more complex, Data in, and Data out of RAM ICs are linked, so it may be reading and not writing or reverse on those RAM ICs.
But, we can see something checking each Data line of each RAM IC. If there is one that has not activity at all, it will tell us that something is wrong with that IC at 80%.
The rest of 20% are IC21 and other mentioned above (that line or completely) or even the multiplexers IC19/20 if they are ADDR bus which fail.
For that purpose it is necessary (or helps a lot) if you make a table where you write your checking of each line involved (and share it).
Also about xtal freqs (I don't think they are wrong). If your oscilloscope has the resolution for it. Why not to check them?
Do all that makes sense for you?
Sorry if I cannot lead you directly at an IC and say, replace that. Because I have not enough experience to identify the guilty guy in your board.
The board (I don't think so) could tell us which line is wrong and affected IC, but could be another thing that hide behind it (a short, bad capacitor, burnt resistor... ).
Some times I have gotten a half working IC (in my case ZX8302) that allows me to boot up the QL but didn't allow me to work with MDVs or other elements.
IMO, the most suspected IC is a couple of RAM ICs, and bad connections on Sockets.
And again, I would recommend to summon all the test you have done in the first message and to create a table with results for ADDR/Dat bus for both sides.
Otherwise the information will be spread in a lot of messages hard to unify & analyze (or just for me to analyze hehehe).
Note: Why do I recommend to check CAS0L & CAS1L lines? Cause as you can tell, they are output signals from ZX8301 and only this ULA manage them, and if they are fine, it would give at a good rate that ZX8301 is OK.