pocketnico said, "Churches wouldn't have to marry people they don't "approve of"."
They already don't have to. They can refuse anyone not of their doctrine. In Canada and in NYC and in many other places no church is required to marry two people of the same sex. Government employees (marriage commissioners and JPs for example) do.
"Instead, people could establish contracts with each other laying down the terms and conditions."
That's called a pre-nup. Lots of people already make them.
"The government would just have to uphold the law regarding the contracts."
Currently the gov't is upholding the contract of a marriage license. If the churches had control of it, atheists would not be able to marry, inter-faith marriages would not be able to happen etc.