Ensure thread safety for RxUI objects

Make sure that internal property / implementation caches we use to avoid repeated lookups are appropriately synchronized.

This situation normally doesn't occur since most ViewModels are created on the UI thread, but should you end up creating a lot of them on various worker threads, you could end up hitting the crash that this fixes.