Modern NT builds haven't really been using the HAL the same way either. It's been a pain because windows on arm kernels have been pretty tied to Qualcomm hardware so far.
HAL.dll was intended to solve the exact same problem as device trees. That's why there's custom HAL.dlls for weird x86 but not PC platforms like some of the SGI boxes. Stuff like sure, it's the same processor arch, but the interrupt controllers, system bus, etc are completely different and not introspectable via normal PC mechanisms.
The issue is that WoA kernels have moved away from heavily embracing hal.dll, instead inlining a lot of functions into the kernel that used to be hal.dll functions for perf reasons. If they kept the original architecture it would have been easy, but they've changed it fairly recently to be less portable.