The real travesty in baseball contracts are how young players are paid in the early years of their contract, when they are arguably making the most value for their teams. Mike Trout... making barely over league minimum. Giancarlo Stanton same boat. Clayton Kershaw his breakout year of 2011? 500K. Thats 500K for a Cy Young Award winner, All-Star, Gold Glover. His 2012 Post Arbitration salary was 7.5 Mil... much cheaper than Bronson who by many milestones was less talented.
Unfortunately fixing that means that you upset the competitive balance between the haves and have nots. Think the Reds would have been able to pick up Choo, lock up Votto/Philips to their contracts if they had to pay Bailey, Leake, and Chapman closer to what their actual value is? In the end you'd still end up with the same problem, but exacerbated. In the end Everyone that is not Boston, New York Yankees, Chicago, an LA Team, or San Francisco would have less money to lock up top free agency talent, because they would have to pay their younger and value building players more. Upset that balance and Oakland has a much harder time fielding a competitive team. As awful as the situation sounds... that's the trade off Major League baseball has made. Just one last example to illustrate that point... Albert Pujols, arguably the best hitter of the last decade was ROY, MVP top contender, GG, etc in 2001 when he made 200K. His company on that MVP list salaries were in the $10 Mil neighborhood.
That leads to the question of Salary Caps. Again, me personally I'm against Salary Caps because players in their younger years are sometimes held to a lower salary than the actual value they yield their respective teams. Let the free market support what it will.
I'm more in favor of the soft caps that MLB already has in place... but with some tweaks. The first soft cap is Revenue sharing. I believe competitive balance between the haves and have nots can be increased by tweaking the revenue sharing a bit more... the top ten teams can stand to lose a bit more to revenue sharing to pad the bottom ten. The other is the Salary Luxury tax, which in it's current format is totally ineffective. In it's current state it only targets the top two payroll teams. The Luxury tax thresh hold needs to be dropped to at least affect the top 5 teams, if not the top 10. Any proceeds in that pot goes back to revenue sharing.
Of course the MLBPA and their agents would wholly fight against such moves, and Selig hasn't really been one to bring a whole lot of reform on this front. I believe if you put these things into play you'd see top salaries decline, and a more competitive free agent market.