The problem is baseball's fixed revenue, namely the national TV and local/regional contracts plus the changing dynamics that teams aren't reliant on attendance for a significant portion of their revenue has de-incentivized teams to field a competitive one. Teams know whether or not the field a winning team or not they'll get x amount of dollars from the TV contracts. Meanwhile, for the last 30 years, the players have screwed the minor and younger players in order to get the older players paid, but now teams are smarter in giving money to older players. With the service time manipulation done by teams, players are arriving at the majors at a later age.
So how do you fix this? I have a few recommended changes:
1) Minimum salary will be $800,000 and increase the wage of minor leaguers. Bonus system for drafted players will remain the same.
2) Teams will have 7 years of full control; 5 years if drafted from college programs, no matter where they're playing. All players will be on 2-way contracts for the first 3 years of team control. Meaning that players will make an amount depending if they're playing in minor or major league. After the first 3 years, they can go to arbitration.
3) From the national TV portion of the contract, allocate money based on how many games a team wins during the season. Right now, no matter what, every team receives the same amount. So the Miami Marlins receives the same amount as the Boston Red Sox. By doing this, it forces teams to value wins a bit more and do some more cost/benefit analysis when letting players go which may mean getting less money from the national tv contract.
4) If a team is in the bottom 6 of the standings 3 years in a row, they will have to exchange the pick with the team with the most wins. If there are more than 1 team that meets this criteria the lower pick will go to the higher win total team and the 2nd lowest goes to the 2nd highest etc. This will hopefully discourage tanking and again incentivize teams to win.
5) Contracts will have a 5 year maximum. Lowers the risk for teams, allows players to hit the market more often.
Obviously some of my suggestions have no chance of being implemented, but changes need to be made to incentivize teams to try and start winning.