We are running into very similar issues. We want to give the user the option to configure a series of base maps that may not be in the same spatial reference. When switching between these, we've seen that those layers that are not in the same spatial reference as the first layer will not be displayed. This is expected.
But, we want to clear the map so that they can be reloaded and displayed. We are calling Map.Layers.Clear. But, this doesn't do it. Map.SpatialReference has no setter. So, there is no way to set it to null. How do we ask the map to clear its initial spatial reference?