I wonder if switching from a lottery to an auction would help curtail some of the abuse? That is, for each position a company wants to fill with a non-citizen they also have to bid on the visa fee they're willing to pay. The highest ~7,000 bids that month are accepted and paid to the government in exchange for a visa. We could debate things like sealed-bid versus open auction and uniform-price versus paying your bid…
Think you would also lose everyone that's not working in IT/finance in an instant (or until whenever their visa expires). The biologist, geologist, physicists and the likes.
Most physicists and biologists and geologists work in universities or labs or other institutions, which are cap-exempt anyway and don't go through the lottery.