As the saying goes, it takes two to tango. Contracts are negotiated between the union and employer -- there is nothing in a contract that an employer hasn't agreed to. It is absurd for employers to complain that a collective agreement makes firing difficult when they were the ones who signed the agreement.
My spouse used to chair an academic union, and also worked as their grievance officer, and she routinely complained that when there were genuinely bad employees, the employer refused to use the means they had available for discipline and/or firing. The university would bitch about the situation, but simply wouldn't go through the mutually-agreed process for firing. It was frustrating for her, because she was required to serve as the advocate for the bad employee, even though she knew that a) they should be fired, and b) they could be fired, if only the university would follow the contract.