But if the original source machine has already picked which IPv6 source address to use then the firewall has to use the correct ISP (as, hopefully, packets with a spoofed source address will be blocked and return packets will come via a different route so the firewall will probably not like them either.)
No it doesn't. You can always NAT, in both v4 and v6, even if the original source address is a non-private IP. I have 2001:0:0:a::/64 from one ISP and 2001:0:0:b::/64 from another ISP, and I put my LAN clients on 2001:0:0:a::/64, I can still use NAT to change the source IP of packets being routed via ISP #2.
"Don't tell me I'm burning the candle at both ends -- tell me where to get more wax!!"