I don't quite understand why noone is building thread-safe UI frameworks
Because it's not exactly easy?
Imagine what happens if 2 threads update properties on different UI elements and imagine that those properties affect the layout. Should both threads execute the layout pass? Use a big fat lock to serialize the layout? That sucks performance wise. Try to make the various data structures that are used during layout thread safe? That's likely to be way too complicated if not impossible.