How to design a fair Synchronous Arbiter?
Each time A and B request at the same time, process the request from A. Next time this happens process the request from B. This seems fair. It's not hard to store the previous occasion.

Alternatively, process the A request if the previous non-colliding request came from B and vice versa.

Always expect the unexpected and it might be worth keeping a tally of servicing A and B. Let's say you create an 8 bit number where 127d is the neutral point meaning A and B have both been serviced identially in the past. You could increment this when A gets serviced and decrement it when B gets serviced. In this way you could examine how things were working out - if the number was getting too low you'd bias the colliding requests in favour of A.

This assumes that A and B do request at the same rate of course but more elaborate logging could be done to check the relative rates of servicing are living up to design expectations.