Having the same issue getting traffic from localhost to work with multiple gateways, doesn't really matter if its failover or load balanced. The traffic from localhost will always follow the default gateway.
Sure you can force the traffic to leave another interface trough a floating rule, but trouble is that the floating rule will kick in after SNAT(outbound NAT) has already happened, leaving you with a packet that will always have a source address of the default gateway interface. So effectively in a dual-wan load balanced setup, the 1st request will leave wan1(default) and return on wan1, request 2 will leave wan2, and return on wan1, and of course pfSense kills request 2.
<slightly ot="">I believe this is the same issue that I'm experiencing with OpenVPN on udp listening on "any" interface, the request can enter any interface, but OpenVPN will always respond through the default GW. Though it seems to work fine with TCP.</slightly>
What we need is some kind of logic that can apply the rules before SNAT, possibly something with routing the traffic trough a dummy-interface and reflecting it back, making it look like regular traffic entering the interface, for (re-)processing. Isn't this how NAT-reflection works? wouldn't it be possible to make something like this?