This is a first draft, a work in progress. All the reviewers automatically added don't need to rush to review it.
The memq field in vm_object is used to maintain a list of mapped pages, sorted by pindex. Remove that field, and stop maintaining the list. Change all iterations that use the list to use pctrie iterators instead. Change the tailq field in vm_page so that it is part of a union that overlaps the {pindex, object) pair, and remains in use only for the buddy allocator in vm_phys.c and the maintenance of temporary lists in uma_core.c. Where a predecessor page is passed to a function solely to help with insertion into the memq list, drop that parameter.