I had a random thought at 5am this morning:
What would happen if you moved the ability to sponsor visas from companies to unions and removed caps? If a company wants someone to move to a country for work, they have to convince the union that it won’t depress wages but will increase the number of people working in the field (which strengthens the union). If your company has a reputation for treating workers badly, the union won’t let you have any work visas. If you hire an immigrant and treat them badly, the visa isn’t tied to you and the union can help them move to another employer.