We pay for home assignments no matter if we like the result or not. First, it seems fair and it has never been a problem from a financial standpoint. Second, because we pay we can give less trivial and more realistic assignments that can take up to 10-15 hours of work. We look if the candidate uses the time to analyze the problem, ask more deep questions, write tests, annotate the code, and make it production-ready in other ways.
So far, this approach worked very well for us.