Simple solution is to give visas to the applicants with the highest salaries instead of just giving these out at random.
The system definitely needs fixing, but simple solutions often have all kinds of negative side effects.
The issue often isn't that talent can't be found... it's that talent can't be found at the price the corporation wants to pay. We need to encourage corporations to pay more which should correspond to the most essential positions needed, not just find the cheapest worker.