However, this issue stems from the fact that the US has no real high-skills immigration path the way Canada, Australia and a bunch of other countries have.
Because of this, an H1 worker from a body shop is equal to a rocket scientist from MIT if they're both Indian.
Look, I have nothing against the body shop H1 worker who's only trying to make a better life for himself - what I don't like is companies that exploit Indians (and other nationalities) and the American public alike.
We all get screwed together, and the US should have sensible immigration policy that works to improve the lives of its citizens.
Of course Americans shouldn't be exploited.
Of course you should be trying to attract the best and brightest - but also lower skilled workers who can fill jobs that have a low supply of labor (all the illegal immigrants are working away in this space).
Immigration is an important aspect of public policy, and by having a broken system, your government is not doing its job.
That said, the Canadian system, while definitely better than the US system, still isn't that great, and not something to model after. Specifically, it gives too much weight to credentialing, which is unfair in its own right, and still very much subject to gaming.
I personally believe in complete free movement of labor (which totally existed before, the current state of things is relatively young), but that seems politically infeasible around the world right now. Brexit is an example of even taking a step back from it. Maybe this will someday happen in my lifetime.
Correct me if I'm wrong but as far as I understand the greencard path for H1B workers seems unrelated to the number of H1Bs issued but more to which nationality H1Bs go to. Since Indians are more likely to apply in the first place the wait time will stay ridiculously high unless the actual quota for greencards is increased.