Cap and floor; change service time on players. I've said before, I think an NHL style system would be best for MLB players when it comes to service time.
In the NHL, players automatically become unrestricted free agents after they turn 27 or seven seasons played, whichever comes first. They get three year rookie deals when they first start and become RFAs afterwards. You almost never see other teams sign RFAs because the cost is so high for the best players but it's possible.
I'd also be in favor of a limit on contract length. NO ONE is excited when these guys sign 10+ year contracts. Everyone knows the backend is gonna be bad.
The current MLB system sucks and everyone knows it.