I know the politics are complicated, so take this with a grain of salt, but I can't help but think that the easiest way to keep H1-B visa holders from taking high tech jobs away from American citizens is to make them American citizens. :)
That's a great answer! Barring that, just hand H1-B people a green card or something that makes it easy for them to switch jobs. That means they can easily compete for the same wages everyone else gets, rather than being stuck with one company.
"Give them a green card" is essentially the same thing - the standard track to citizenship is ... -> green card -> citizenship, you pretty much never jump straight to the latter. Generally speaking, green card holders can apply for citizenship after 5 years, and it's pretty hard to be ineligible for one, but not the other (some people prefer to stay on green cards for other reasons).
yes yes yes
A lot of H1-B's don't want to become American Citizens and are satisfied with obtaining a green card.