Respond immediately with consequences, not just explanations of why that behavior is not allowed. Immediately send each child to her room and briefly say why. Take away privileges immediately - don't just tell her she can't play with Billy tomorrow if she acts that way today. The time delay is too much, and it's harder for the 3 year old.
If Billy plays too aggressively, immediately take your children home and say this play is too rough. He'll figure out that play dates end when he does this. If it's your house, he needs to abide by your rules. Tell him he needs to stop or the play date is over, and send him home while you take your own children into their rooms.
And you can limit your dates with them even though they live next door. It sounds like you don't much care for her in anything other than limited interaction anyway. If she wants to get together, tell her that your children are not being allowed a play date due to disrespectful behavior. Keep repeating it. You don't have to cut that boy down, but you absolutely have to step in and say what you will allow your children to do and not do.
You need to take away something that your children care about. It has to be a toy or a privilege that you can implement right at that second. When my son was disobedient, all his toys came out of his room. Period. We left books and his special blanket/stuffed animals, but all the other stuff was banned until he earned it back.
I'm not sure what you will lose if this friendship suffers a bit - the kid is no good for your kids, and the mother doesn't rein him in, and you don't have a high tolerance for her. So exactly why are you continuing? Find some other activities and friends for a couple of days per week. Go swim in the lake, take a nature hike, go to story hour at the library, invite someone else over, and so on. There's no need to tie your social life to a bad situation.