Another way to handle this would be to bascially build two networks all
the way down to the host:
ISP A ISP B | | Router Router | | Router Router \ / Host
So the ISP selection happens inside the host, once a network is selected it is no longer possible to deviate from the path intended by the host.
Isn't that what source address based routing implies conceptually?
ISP A ISP B | | Router Router \ / Router | Host
It can be implemented while sharing the routers as long as the routing
table has the entries learned from ISPA as tagged to only apply to packets
with a source address from A's prefix and vice versa.