I would just change the situations that you have them in for a while. Calls B's mom and agree on a simple strategy.
My first strategy would be no unsupervised playdates for a while, and not letting thing escalate. When B does come over with his mom, at the first sign of trouble give a warning. If there is any trouble then B and mom leave imediately. The same exact thing happens when you go to their house, first sign of trouble and you warn. If there is a problem, you pack up your DS and leave. Depending on how far away it is this might be a bit annoying though.
My second strategy would be to take them places where conflict are less likely to arise in the first place. Zoos, museums, etc. Places where there aren't toys to grab from each other. Places that are more structured and have a focus outside eachother.
My first strategy would be no unsupervised playdates for a while, and not letting thing escalate. When B does come over with his mom, at the first sign of trouble give a warning. If there is any trouble then B and mom leave imediately. The same exact thing happens when you go to their house, first sign of trouble and you warn. If there is a problem, you pack up your DS and leave. Depending on how far away it is this might be a bit annoying though.
My second strategy would be to take them places where conflict are less likely to arise in the first place. Zoos, museums, etc. Places where there aren't toys to grab from each other. Places that are more structured and have a focus outside eachother.