I don't know if I'm the best to give you advice, but this is what I found useful with my mare who had the same problem.
First thing first, I started riding her with a flash which prevents her from just opening her mouth and resisting the bit - not a solution but it helps in the training process). Flashes are cheap as far as I know! Then, you need to start training (assuming you've got his teeth checked - if you can do this to make sure its not a pain issue).
What I do with my mare is a pressure system kinda adapted from the natural horsemanship techniques I guess. Whenever I ask her to do something, I start off asking her in the lightest way possible. For example, if I want her to slow down (I can't use my legs for this as my horse is leg shy), then I give a tiny pull (more like just closing your hands on the reins). Then, if she doesnt respond, I increase the pressure until she does respond. The moment she responds (even in the slightest), release the pressure. The horse needs to understand that the moment they do what you ask of them, you'll release the pressure. This way they begin to learn to respond to the lighter pressure!
Other than that, I'd try teach him voice aids. You've said that whoa doesnt work, so maybe try another voice aid or a sound like whistling. Each time you ask him to stop, use the aid, if you lunge the horse and want him to slow down, use the aid. Eventually they begin to associate the aid with the action. I give the verbal aid first then use the reins, and Anita (my mare) is already beginning to respond to the voice aid alone.
I found this combination very useful for my little mare and she is already beginning to respond amazingly well to it so I hope you might find it useful for your horse!