I think H1B should be reformed. We should still have set limit, but instead of picking people randomly to grant visas, the employers should have a bidding war and only grant visas for the employees that will receive the highest compensation. This will once again promote experts and also ensures they will be paid their true worth.
Also the window to be able to find another job should be extended, to allow them to switch if they get exploited.
Instead of choosing randomly, make companies bid with the salary offers and grant visa to the highest ones. I think that would solve a lot of problems with it.