One solution is to have the take home interview as the final step in the process - after having screened the candidate and discussed general technology/framework/concepts without coding.
When I did interviews, I found that just by discussing things like thread synchronization and let them explain the projects that they've worked on would weed out most of the candidates which weren't a fit with the position. Then the take-home problem would make a lot more sense for both the employer and employee.
Or another method: You take home a problem, implement it, then present the solution to multiple potential employers. The problem would have to be unique (so that there are no ready made solutions online) and trusted by the participating employers.
And I think this is exactly what OP is doing, and that's why it's great.