All the MLBPA wants is for their members to be allowed to negotiate their terms of employment with any employer they want. The owners do not want this. The owners want to regulate the free market for labor in their industry. Once a player’s employment contract has expired, their should be no restriction on whom he wants to play for, for whatever reason.
It's not a free market. It's a league. And it depends on being competitive. Therefore, it is perfectly reasonable for them to set salary caps, as other sports do. It's no different than having rules for what kind of car a NASCAR driver can drive.