Hah, I wasn't around at that time. I believe FreeBSD 5 went ahead and did the same thing most other BSDs and Linux did initially, which was the so-called "Giant" lock scheme, where only one CPU could be in the kernel at a time. The plan being to gradually break things into smaller locks. That's more or less worked (for FreeBSD and maybe NetBSD — OpenBSD still has notoriously poor kernel concurrency in 2018), but didn't yield high concurrency up front, and there are still vestigial uses of Giant in FreeBSD.
I think Dillon had some sort of lock token thing? It looks like they're described here, under "LWKT Serializing Tokens:" https://www.dragonflybsd.org/docs/developer/Locking_and_Sync... . Looks somewhat easier to integrate but also some tradeoffs — proper restart when all your lock tokens get dropped seems like it might be fiddly.