This paper touches on some similar ideas:
though I personally think (you need to read the paper to get what I'm saying here) that his forward pointers want to be from the vnode forward so they handle the page cache.
And the biggest vnode? Nothing has changed in 30 years, it's gonna be the swap vnode because that's what backs all that malloc-ed memory. There really should be a swap vnode per process, structured in a directory tree like /swap/$process_group/$pid so you can page the whole process group out together.