You mention that there isn't a better solution. IMHO, I disagree.
I think Github has figured out a way. They've been around 5 years and haven't fired anybody and nobody has quit.
Most firings are due to a job / job skill mismatch. At Github, they do a week long paid interview so both sides really know what they're getting into.
I don't work at Github, but am such a fan of their company.