Tinc looks interesting, I will test that as well.
Considering the huge difference in context switches and interrupts, I don't think that encryption induced CPU load is the only issue here.
Kernel stuff on its own doesn't just magically run faster, of course. But in this case, I think it's the constant interaction between user-space and kernel-space, which causes the problem. That's an issue that will impact any user-space solution to a networking problem.