I've always been torn about pitchers being able to throw at batters, and batters having so little recourse. A pitcher is able to throw 90+ mph at a stationary target. The best I could do throwing a punch that fully lands on the pitcher's head is likely a fraction of that speed. The pitcher really deserves a smack with the bat. I'm surprised that "lack of pine tar" hasn't resulted in some bats flying past a pitcher's head at 50 mph.
If MLB wants to get rid of this BS, they'll suspend a pitcher for a long time (without pay). I'm guessing a suspension for a couple of months in the middle of a pennant run would do it. I bet magically you'd see much better control.
I know it's a part of the game, but when a guy is worth $100 million with his contract, do you really want him standing there as a sitting duck?