Play comes at the lead, lead sees B1 move late into the path of A1, trail clearly and correctly sees A1 lead with the forearm. Both have the whistle (not good but it happens ) they get together and both have a foul, and to me it is possible that both players fouled.
When does the foul occur? It should be based on contact. If contact occurred from the dribbler's forearm then that is the foul that happened first. The block was secondary. The only scenario that may change this is an airborne shooter. I would think then the contact that occurred would be initiated by the defense and would have to be a block. The situation of opposite calls is easier to correct in a 3 whistle game. The areas and primary responsibilities are reduced greatly.