A salary cap needs to be instilled in MLB.
But not in how much a player can make but how much a team can spend.
The Mets, Yankees, and Dodgers of the sport can spend $400mil a year but not have a cap on how much to pay a player, but a the Pirates, Rays, and Marlins of the sport need to spend $200mil and not act as AAAA teams.
This would mean a lot more teams would be spending money, so more money would go to the mid and lower tier players as there'd be more teams that have money (by force of the rules) to spend.
On the backend, MLB needs to reel in it's media deals. About a dozen teams don't have a local media deal.
It'll never all be under one umbrella cause some big market teams make too much money hosting their own teams to want to cut back and share with everyone else for the sake of the sport especially when they aren't feeling any financial issues.