Yes I think part of the problem is that I expected to replace JsonSerializer with default settings with NewtonsoftSerializer with default settings. They produced similar message format on serialization (with an embedded reference to NHibernate PersistenceBag type) but NewtonsoftSerializer failed to deserialize the message.
Looking at the old JsonSerializer code on GitHub, it has lot of customizations with a MessageBinder and ContractResolver. In our scenarios going down the $type rabbit hole was proving to be a time sink so we have configured NewstonsoftSerializer with different settings that seem to work for our scenarios.
You may close this issue now and I will raise a new one if we run into further issues.