I am thinking that they should put suspensions into effect in MLB like they do in UCI Cycling. First proven offfense, you're gone, for 2 years. And then after you serve your 2 year suspension, you don't immediately get to return to the "big leagues", you have to ride in a smaller team, sort of the major league equivalent of triple AAA ball. Second offense, you're banned, for life.
I am thinking that this would make them not dope. But probably not, they're always be cheaters out there.