the biggest problem with going over budget is the people on the project get paid, the project is delayed, and every day its delayed the people are still getting paid the same amount.
They need to start making contracts that are payment for the entire project, not a weekly wage, that way workers work faster, get the job done, people don't mess around and these projects come in on time and on budget.
When you've got thousands of workers, often with no follow up contracts gaurenteed, and a job they think the government will pay through the teeth rather than stop midway through, would you be working to your maximum speed each and every day, a lot of people won't.
Say a project to build one ship has a budget based on saleries for 12 months, but it takes 18 months to build due to delays and problems, those same people are paid 50% more, and the saleries for everyone involved adds up to ridiculous numbers, construction costs don't really increase, it takes X amount of steel to build a ship of y size, if you take 12 months or 6 years, its still the same amount of steel, the variable is wages, and the last time a government project was delivered on time, well, it was probably the aqueduct, and I'm sure slackers were whipped, then thrown in the arena.