What can be done to fix it and make it more efficient? Well, the big problem is that congress loves boondoggles like this. The politicians are also delighted to take the money to help fund their campaigns. Now they owe some favors. As a bonus, they also get to brag to their constituents about how many jobs they're helping to create.
The US system of government perpetuates this. Unfortunately, things are just going to get worse until we make some changes like establishing term limits and preventing politicians from becoming lobbyists.