Many thanks for all your feedback. There seem to be two common approaches: either ignore the behaviour and walk away, or address it immediately and tell them to stop.
The issue I have with the ignore/walk-away approach is that when we're out and about, I can't always just walk away. I also personally feel he's too old for this method. It seems to frustrate him even more and makes him angrier, and I worry that it looks like I'm ignoring the bad behaviour. However, we might still try this.
The second method, which is what we've been doing, is addressing it there and then by saying, "Don't speak to me or anyone else like that." The problem is that he often laughs, smiles, or shrugs his shoulders as though he doesn't care.
Yesterday, on the car ride to school, I asked him what he thought were kind words and what were rude words. We had a really good conversation about the rude words he uses most often. He said that when he gets angry, his brain tells him to say them (which isn't an excuse, of course), but it opened up a good discussion. We also talked about words that mummy and daddy might say, both kind and rude, and I explained that we don't tolerate rude language in our family.
We then spoke about other techniques he can use when he's feeling angry, upset, or scared, and from today we're going to start enforcing them.
We also discussed consequences. If he speaks rudely to anyone, including us, his Game Boy will be taken away for a day or two, and he won't be allowed any TV either. There won't be any warnings beforehand, as we've spoken about this many times and he knows exactly what is expected of him.
Thank you for all your feedback, theres alot i wasnt doing so i will be implementing it.