I have long thought that the length of contracts is a bigger obstacle for small markets than the cost of free agents. Free agent salaries, no doubt are an impediment but not as much as the length of contracts. With that in mind, I think MLB has the ability, with a lot of associated challenges, to even the playing field.
MLB could go a long way to competitive balance, if they limited contracts to no more than five years. It's the length of deals the keep small market teams out of the free agent mix. Small market teams simply cannot take on the performance and health risks associated with 7-10 contracts.
Not only can teams like those in NYC and LA re-load every year, but they can also absorb crap contracts that small market teams cannot. By the time the Angels signed Rendon (another terrific example of stupid spending), Pujols contract was into its third year as a boat anchor. Stanton's crap contract will not prevent them from going after top tier free agents. Long term contracts help large market teams sign players.
Of course, limiting contracts to five years is a CBA issue and one the MLBPA will have to be bribed to accept. Possibly coming to some sort of agreement to permanently take the salary cap out of the process would do it. Add in a greater share of revenues. I have no doubt that the MLBPA would use shorter contracts to drive up player salaries.