Many contractos spend years on the same job and often the same contract or it's re-incarnation. Many ar Sub-contractors. The actual workers make the equivalent of government workers salaries but their cost to the government is far higher due to the contracting company profit margine and overhead. i.e. a contractor may be billed at $120/hr while actually earning $50/hr + benefits. Given their longevity on the job it would be cheaper to hire them as government employees for a 30-40% savings (I am including benefits in my estimation).
As part of this, make firing incompetent workers easier. Also, put a 6 month time limit on contractors serving in any long term position.