Or just require H1B workers to be paid above average (by some factor) for the position. Average pay for <workplace> is 50k? If you want a foreign worker, you must pay them at least (eg.) 1.2x the average, so 60k. This solves the problem of abuse (since they'll probably find a local for 55k), and solve the genuine need for foreign workers in areas where there are not enough locals (eg. touristy areas needing tourist workers) ... at a bit higher price of course.
Perhaps that would work, but I'm not so sure. I don't think the employers we're talking about are sensitive to a 20% price premium. And they might find the additional leverage H1B gives them over the employee to be worth the premium anyway. My proposal would give natives a chance to get a real job (not a ghost posting) that was given to a real person (the H1B person), and simply take their place.