MLB has always had to consider the possible anti-trust ramifications of a hard cap.
No matter what your chosen career is, you have an unrestricted right to go to any employer in the country and negotiate your best deal.
But baseball players historically never had that right. Because of the "reserve clause" in all player contracts, the team that held your contract basically owned you. Unless they voluntarily granted you free agency, you could not even approach any other major league team about a tryout.
This was a grotesque, illegal monopolistic practice that the Courts pointedly ignored because they were staffed by baseball fans who didn't want to **** things up. But those days are gone now.
MLB has, since the end of the reserve clause, done as much as they thought they could get away with to limit what the players could do. A "hard" salary cap would bring about not only a strike, but the possibility of getting in trouble with the Justice Department for an anti-Trust violation.
So for two unavoidable reasons, a hard salary cap will never happen in MLB.