On the matter of creating your own USBMap kext, while the methods were really straightforward using the Opencore recommended tools, they just gave random results on Monterey because the USBInjectAll kext and port limit setting does not work. Also, it took me a while (several hours) to understand the logic behind the USBMap_All kext the original poster provided. But it did start to make sense. I simply took a diagram of the motherboard from the manual, which lists the USB controllers on the board and the header connections and slowly it started to make sense. I was under the impression that you mapped each individual port, but that is not the case. If you map a USB controller to a HSxx resource, all of a sudden all the USB 2.0 ports on that controller work. So, as you read through his "USBMap_All" kext, by opening the kext by right clicking it and selecting "show package contents", then go to that folder and load the Info.plist into ProperTree, you'll see that you can select and reorder and rename ONLY, each resource and choose the ports you want. That took me a long time to get to that point. I just followed my nose and it worked.
What I do not know, and anyone still feel free to point me to a guide, is how to actually discover how the ports are laid out and id their resource from the DSDT handed to the OS by the BIOS (I think that's how it works). I can do it using a standalone USBView under windows, but I certainly don't want to install Windows everytime I install a new motherboard (I only use Windows when forced). Then once discovered, how do you get from that to the USBMap_All kext provided by the original poster? That is what I am still missing.