But the companies should then need to compete in the free market for those hires.
1) Decouple the work authorization from the employer. The employee gets an open work permit for X (say 5) years.
2) If you can prove you have been gainfully employed above some agreed upon salary (via tax records) for 3+ years you get temporary permanent residency without any employer interference/input. You then finish out the other formalities (health, security checks) to get the official permanent residency.
The goal of 1) is to empower the employee with work mobility that does not affect future residency. If there really is a skill shortage they can leave without additional formalities or negotiate for better compensation. If they are talented, have stayed legal in other respects, and wish to stay in the US, they are now set.
For the employer case, this is true for prospective immigrants of all national origins except India and China, which also make up the bulk of potential engineers looking to become permanent residents. As of today, the average time for an Indian in the EB2 ('advanced degree or exceptional ability') category is roughly 5-6 years and this number is going up because of increased demand. For the EB3 category, the wait is at least a decade.
I agree that companies have the potential to abuse this power they have over you, but in practice, I have rarely seen this happen.
You have rarely seen this happen because it is illegal. It is also illegal to hire based on nationality, gender, race or any other identifying feature. You can't seriously claim that this doesn't happen in practice. While this may be cynical, I don't doubt this for a minute.