OpenBSD no longer has lkm, or any loadable kernel module framework. Any kernel implementation would have to be part of the kernel source tree (this one is userland, in ports).
There is also BoringTun: https://github.com/cloudflare/boringtun which is faster
Disclaimer: I wrote BoringTun
There's also official documentation for how a userspace implementation should behave. [1]
The android version of WireGuard has a userspace implementation for devices without WireGuard in the kernel, which at the moment is pretty much all.