The only solution is to get people with the expertise to do ALL the work, including writing a specification if necessary, and to take ALL the risk. Financial markets are good at eliminating poor performers, just try getting reinsured after a project failure in the $M category. Risk markets (insurers) get very good at judging what is a reasonable price for something that involves risk. I once worked for a business called 'Objective Risk Management' briefly, that name came from managing risk in mining projects I think.