Yes they deserve to be punished. I think what baseball should do to those who are caught is void their contract, suspend them for one calender year and then put them back into the amateur draft no matter how many years they have in the majors.
Once in the draft, they can not be picked higher than the fifth round and can only sign for the minimum. From there, they must report to the lowest class of the minors and work their way up. Along they way, they must pass mandatory and random **** tests. One failed test and its suspension and back to the beginning.
By doing it this way you make it so teams are no longer obligated to keep a player on their roster or pay them. You also give the player a chance to redeem himself by making him prove his legitimacy as a ballplayer. Along the way, if a player is caught using ***** it will be found out before they make it back to the majors. Also, sending a player back down to the low minors would be an embarrassment to them. Do you really thing that a player with as big an ego as Alex Rodriguez would want to go back to riding the bus?