Payments should be based on performance
I don't ever want my clients to pay designers or developers by the hour. That's stupid and leads to massive overspending. Instead, I try to use all the guidelines we have here to keep the project on track and costs under control.
I suggest you have lots of milestones where payment is keyed to specific achievement. That puts the responsibility on the developer to come in with the good estimate that forms your starting point. Change orders modify the basic plan. Each change order should have both a dollar amount and description of the achievement milestone that generates the payment.
Make this a part of your Request for Proposal so that developers and designers know what they're getting into. Then be disciplined about paying only for achievement, but also fair and flexible when things need to be done differently than you originally planned.