I don’t see how that reference type would work - you either let it convert to &T, where you could call a method that mutates a RefCell or similar, or you don’t and the type is incompatible with all existing code. If the compiler knows whether you’re accessing an UnsafeCell, there’s no optimization benefit to adding that type, and if it doesn’t (through a trait object), you have to either make the type unusable or redundant.
Plus you still have transmute, and the idea of undefined behavior there has to do with aliasing optimizations. Since regular references can alias, it would be perfectly safe to transmute to an &T anyways, like C++’s const_cast.