We've gone through that same issue with our 4 year old.
It hasn't been any one thing, but a mixture of things that has brought the problem under control. I'll go over what worked for us and maybe it can help you out. It's important to note that none of these things was an overnight success, it took time for us to get us to a point where we are now (and a lot patience and a lot of time). Going over the email proofread it, I think it comes down to consequences and rewards. Our guy responds well to that, as long as we find the right carrots/sticks.
The first thing was to stop him from watching any tv show with violence. Depending on your viewpoint, that can be either an "are you serious?" moment or "duh!" moment. Our little guy was picking up on what was on the screen and on channels that were for 'kids'. For us, the lightbulb didn't go off until he saw Teenage Mutant Ninja Turtles and starting using their moves against us when he was mad. Also, his general style of play became more rough (he'd do all kinds of Turtle moves against his playmates). After losing that privilege (and explaining it to him why there are no more Turtles and some of the other shows he liked), that form of tantrum has almost disappeared. He still acts out the Turtles sometimes, but only in a play setting and not nearly as rough.
When he'd throw his toys at us or around the house, I'd explain he had lost that toy and march him to the outside garbage can and have him put the toy in the garbage can. For our guy, it has to be outside for a sense of finality, otherwise he'd try to get it out of the trashcan. He did get selective about what he'd throw, but then I shifted the penalty to another toy I knew he'd like, explain what was going on and go through the same process. The throwing stopped.
We held him too when he was going through the rages and that seemed to work pretty well, but like you found out, our guy tried to fake his way out of it, so I'd keep him wrapped up until I was extremely sure he was ok and then I'd let an arm go and see what happened. Sometimes, he'd try to hit me again, so I'd grab the arm again and start over until he was really calm.
Spitting we dealt with differently. We kept a squirt bottle of water on the counter and when he'd spit at us, I'd grab it and give him a squirt (on the forehead, mouth, chin, but not eyes or nose) and that stopped pretty quickly.
A strict schedule helped too. Our guys needed a framework he was familiar with, so he has a routine and knows what happens when we get home, what happens before dinner, what happens after dinner, etc
For my SO and I another important part was no arguing/yelling/etc in front of him. He'd watch that behaviour between us, imitate it when he was mad, and say "that what mommy/daddy does". He still knows when there's disagreement, but sees us talking 'calmly' about the problem and seems to be emulating that.
At this point, we're able to tell him that if he's going to have a tantrum he's going to his room until he can calm down. Sometimes that stops him, but sometimes not, so we put him in the room, close the door, wait for him to quiet down and then go in to talk to him.
To offset all of the discipline, we are very quick to praise him when he does something correctly or bring up he hasn't had a tantrum this week, so we'll go do something special that he likes. The nice part about that is that we can use that as a goal and say that if he acts well for x days, we can go do something fun. The flip side is important though and if he messes up, we won't do the special thing he'd like to do. He's a lawyer-in-training, so he tries to get the reward and skip the punishment, but we're clear that no means no.
I hope this helps!