From the description, it's fairly easy - harder to describe than to doodle really.
Get two contactors and an interlocking kit - you can do it without, but the interlocking kit mechanically prevents both closing under any fault conditions (or even someone poking in the armature with a screwdriver) and protects your solar kit. If that's not an issue (e.g. the solar system can cope with a momentary overload, or you are happy that it's not a big risk) then you could use a couple of relays - but by the time you get to 20A, relays are likely to cost as much as contactors anyway.
Wire the solar output to the input of both contactors in parallel.
Wire one heating load to the output of each contactor - so contactor A powers heater A, contactor B powers heater B.
You now have a pair of contactors that can connect no more than one load to the solar kit.
Each contactor needs to have 1off normally closed (N/C) contact. Many do, some don't and you'll need an auxiliary contact or it may be included in the interlocking kit - devices vary.
Do the control wiring as :
Supply to stat A common
Stat A demand (N/C) via contactor B N/C contact to contactor A coil
Stat A satisfied (N/O, normally open) to stat B common
Stat B demand (N/C) via contactor A N/C to contactor B coil
If tank A is under temp, then the stat will route power to the contactor for heater A - via the N/C contact on contactor B which is off.
Only when tank A is hot will it's stat change over, power is then routed to stat B.
Assuming tank B is under temp, then initially contactor B will not pull in. As stat A changes over, there's a lag until contactor A drops out - very short, but there's a small lag. Only when contactor A has dropped out will it's N/C contact close, and then contactor B can pull in powering up heater B.
Similarly, if tank A drops below temp, then it's contactor can't pull in until contactor B has dropped out and it's N/C contact closes.
It should be fairly obvious that this naturally gives tank A priority.
If you don't want that, then it can be changed. Wire a N/O contact on contactor B between the common and satisfied terminals of stat A (i.e. in parallel with the contacts that close when tank A is satisfied). This will then hold in contactor B until it's stat is satisfied and opens.
A still has priority at startup, but after that, whichever tank is heating will continue to heat until it's satisfied and then the other tank can have a go until it too is satisfied.
Just a quick doodle just using the basic library parts from Frizting, so used relays for the contactors etc (ignore the part numbers !). Should give you enough to work the rest out.
One thing to consider though is how well the solar kit will cope with this. I would hope it should be fine if it's designed to drive something like an immersion heater with a stat. When it turns on it's output then there will be no load - and a fraction of a second later the load will be applied. Similarly, when stats change, the load will be dumped, and if that results in the other heater turning on, then the load will disappear for a fraction of a second before being re-applied.
Also, I've not come across a standard contactor that doesn't hum. I used to work in an office with night storage heaters controlled by teleswitches (remotely switched by radio by the supplier for night rate). Occasionally they'd turn on during the day - we'd know this by the "clack" of the contactor pulling in and the hum that follows (and a similar clack when turned off again later).
I have no experience with them, but I believe there may be quiet versions, or it's possible to use a DC coil with a diode - perhaps someone else can expand on this.