As you notice, stateful firewalls really don't like asymmetrical flow traffic. In this type of situation you have two options.
Place both uplink interfaces into the same security zone. This will allow the session table to still match even when traversing both links.
Use source nat to the interface address on the inbound flows from uplink B. This will force the return traffic to come back to the uplink B interface and complete a symmetrical path.