Regarding registry setting disabling shim, it's what Compatibility Administrator (32-bit) can help with. You get it with Windows 10 ADK. When you disable an entry in system database, the entry's GUID is written under that key with value 0x77. Re-enabling an entry sets value to 0x00.
I was testing another workaround yesterday, making the game use separate heap where it normally uses process heap. That seems to help with stability, on playthrough with default, music would eventually stop, though DxWnd was showing as still playing, but time didn't advance and game ended up crashing in glide2x.dll a bit later. I got tired, music didn't stop and didn't crash with the workaround, may just take longer.
Though there are bigger memory leaks related to that heap, grows in megabytes as levels are loaded / unloaded. I wish it was as simple to just HeapDestroy and HeapCreate it to get rid of the leaks as the heap just keeps growing, but there are some persistent allocations on that heap that are needed when a level is loaded and shouldn't be just cleared on unload. Identifying all the correct places that reference it is pretty time consuming and I'm tired of all screwing around with this game as it is.