No one to blame but themselves and their greed
Microsoft had/has a very nice solution to UWA, but their greed got in the way...
UWA could be accomplished with using .NET runtime as their basis. When .NET first was released MS even said, this has the possibility of running apps on top of different processor architectures unchanged (the technical part). Yes I know that some portions of .NET rely on Win32 API calls underneath, but they could have finished that part up, if they wanted to.
When Windows RT was released (for the ARM), MS chose to completely cripple it because they wanted to control the ability of which apps could run on it to support their walled-garden (the "greed" part). Afer all, they couldn't allow just anyone to be able to use "legacy" applications on ARM devices, "OMG we would lose control".
I don't shed a tear for the greedy, stupid bastards that made that decision and made life hell for the rest of us. I hope they rot in their offices.