This uses the radix functionality from https://reviews.freebsd.org/D23446 to locklessly lookup and busy or wire a page. It has fallbacks to object locking for insert.
I don't like the naming. _unlocked is long and some of these functions will acquire the lock if they fail and some will simply fail. So I'd like suggestions.
It is actually possibly to busy sleep for a page without the object lock and I will implement that as a separate pass. This should restrict cases that acquire the object lock to only the cases where the page is not present in the object.
The vast majority of in-tree users can directly use the unlocked variants. I tried to see if I could eliminate the direct locking variants but there are a few cases that are challenging. It may be worthwhile to chase these down just for API simplicity.