I don't live in the US but H1-B's are a subject that always put me into thinking.
I've been to the US from training (boeing/airbus) and for some months as a H1-B many years ago. I just wanted to learn english (which I barely do) and have some experience outside my country. Anyways, the wages paid were lower than the ones paid in my homecountry and the costs were about the same. The reason I got the H1-B was, beleive of not, because it was easier than a getting regular student visa by that time, and I needed some kind of interaction with americans to really learn something, the student visa wouldn't get me that, I would be in a group of foreigners. Everybody know there is no such thing as shortage of workers, companies are just using that to pay lower wages and be more competitive.
My point is, the US should just end the H1-B program, it is hurting not only american workers but also foreigners that are trying to have a better life in the US. But also, it should create some kind of short term, easy to get, "internship" for foreigners, just like other countries do. In my country, there are plenty of americans that come here just for a short period of time. Not for making money, it's just a knowledge enterprise.