Cleaning up FreeBSD's VM system complexity is what I've been concentrating on and will continue to concentrate on. However, part of the reason that FreeBSD's VM system is more complex is because it does not use the page tables to store reference information. Separating out these three mechanisms into three different subsystems would simplify the code enormously, I think. Linux demarks interrupts from supervisor code much better then we do. This is a real sore spot in current FreeBSD code.
Interrupts are just too complex.
I'd also get rid of FreeBSD's intermediate 'software interrupt' layer, which is able to do even more complex things then hard interrupt code.