This is totally normal. I also get that it’s unacceptable.
I think redirection works with 1 and 2 year old toddlers. By 3 and 4, it’s time to try some new techniques.
First of all, most early childhood experts will tell you to get past the “I’m sorry” idea and the desire to have the child feel empathy for the person they hurt by saying “You’re not my friend” or “Go away.” First of all, an adult should not be hurt by this. Secondly, the 3 year old is not developmentally ready for this. He’s not sorry. That doesn’t mean he’s destined to be a sociopath – it just means he has no sense of empathy yet. Worse, they get the idea that “I’m sorry” mean “Do over” and makes everything okay. It doesn’t.
(For future reference, Google any of the versions of the story of the child who says hurtful things. She is given a feather pillow and told to disperse the feathers, that each of them is a bad word or mean thing she said. Then she’s told to gather up the feathers and put them back in the pillow. Of course she cannot. And so it is with hurtful words – they’re out there and there’s no taking them back. But that’s for an older child than yours – and it will ultimately be a good lesson when you have to discuss internet safety and how, once a photo or tweet is “out there,” it’s “out there” forever.)
So, I’d suggest that you “graduate” to consequences for his behavior. He’s allowed to FEEL that he doesn’t want to be friends with someone and he’s allowed to WISH that they’d go away. What’s not allowed is actually SAYING that to someone’s face. So focus on what you want to stop – it's not the feeling that is the problem, it’s his response to the feeling. When someone is really upset, there has to be a technique to deal with it. I think you’re asking him to express what he cannot express yet. You are doing the right thing by dialing down the volume and speaking softly and slowly – that can be calming. You’re getting down to his level, and that’s good. But he’s also getting all of the attention, which encourages him to act out to get you to make him the center of things, which is what he might have been saying by telling someone else to go home.
But you might consider letting him express his frustration appropriately – and that means going to his room to just be mad for a few minutes, maybe to yell at his teddy bear (and no, that’s not “mean” to the teddy!) or lie on his bed and close his eyes and breathe slowly. Those are all fine. I wouldn’t make him talk about it so much right now. I’d focus on letting him know this behavior (throwing, yelling, insulting) are not appropriate and he needs to remove himself from the room (or you will). “We don’t talk like that. Time to go to your room until you can talk nicely.” You separate him from the situation that’s annoying him, but you stay with the person he was mean to. You can also model this behavior by saying that something has made you angry or frustrated and that you are going to your own room for 5 minutes to calm down. Set a timer so he knows when you are coming back. It can be less than 5 minutes to start; when he goes to his room, it can be longer than 5 if you think he needs it. He can come out when he is calm – that lets him know that he is in control of his own behavior, that it’s his choice to separate himself from the group. That’s important. If you are out at a play date, then you plop him in the car and bring him home. He can’t talk like that to other people so you take him out of the situation. Yes, it’s annoying to you to pack up and leave. But it’s effective. It may not work out for him to talk later on about why he was mad – and that’s okay. Let it go. He doesn’t have to talk about it, he just has to find a better way to deal with it at the time, and not get any kind of reward (no matter how unintended it was from your point of view) for misbehaving. This will be a strategy you can use going forward – when he is 6 and 9 and 13. So it’s worth developing this pattern now.
Hold off on cleaning the toys in your own house, at least at the moment he throws them. He can do that when he comes out of his room, and before he does anything else that’s fun. It’s not punishment – just a chore that needs doing. Alternatively (and I did this at 4-5 years of age), YOU pick up the toys and put them on the closet shelf, letting him know they are only for kids who don’t throw and scream. Or, let him know, if it occurs soon after, that you don’t have time to do X or Y with him because you are either tired or behind schedule because the toys had to be cleaned up (this is especially true at someone else’s house, where you can’t leave the mess for others). “If only you had not thrown the toys, I would have time for X.” Or, “It’s too bad you said those things to Jimmy, because we had to go home. We don’t say ‘You’re not my friend’ to anyone.” So, you can show him that you are focusing on others and not him. But don’t talk it to death – just make a comment and be done with it. Then no talking.
Also, talk to the preschool teacher or daycare provider and find out what phrases they use. It can be helpful to use the same words, so kids learn that these are life rules and not “school rules” or “mom rules.”