I agree, I think you need to see a family therapist. He might have a problem with extreme anger, but my guess is it could also be something as simple as he doesn't recognize you as an authority figure.
"Hitting hurts and makes me sad" and "it's okay to be angry but hitting is not" isn't enough of a response, and it has left him a little confused about your reaction. And obviously as you say, you've been trying this same thing for a very long time and it isn't working.
Are you exhibiting obvious anger at all? I'm not talking about harming him, but showing real anger in your voice and actions and facial expression?
Few 2 year olds physically attack their parents, because they recognize that person as dominant. He needs to see you that way.
It would be a good idea to see a counselor. It would be a normal thing for a kid to do if he had been harmed a lot, but it doesn't seem normal for a kid who is never treated harshly.