The compete on the open market not only for dollars, but also for terms. When a player has significant questions about their health or declining abilities, bonuses based on achievements become more common. A lot of players and a lot of teams don't like that because it changes their focus from doing what's best for the team to their individual stats. The current system where they decide on an individual basis in negotiations what is the most fair seems to work pretty well. It would be nice if you could cut the top end salaries by about 80%, but the players at the bottom don't do well. Minor leaguers barely make a living unless they are top prospects and players who just barely reach the majors make nice money, but they leave baseball with few prospects for their remaining careers and savings that will only last them so long, depending on how long they played at the league minimum.
What would be nice, actually, is if the union took money on a sliding scale from player salaries to help out those who are struggling. When designing a system like that, you should pretend you don't know what your skill level will be and then design a system that would satisfy you without that knowledge. Do you want to be supported while struggling to reach the majors or do you want pressure to end your career early if it's not working out? Make those decisions, design the system that works with it, and then apply it to everyone. Some clubs in poor communities in other countries do things like that where the few players who make it will help support the other club members who never make a dime so that the club that produces those few money-makers can keep going.