Most of the transaction rework was about system transactions (transaction scopes). Regular transaction handling was not modified much. Using
<entry key="transaction.factory_class" value="NHibernate.Transaction.AdoNetTransactionFactory"/>
as suggested on the other thread you point is valid only if you do not use system transactions. This transaction factory just ignores transaction scopes. Moreover, the system transaction handling of the default transaction factory is normally not involved when using regular transactions, so switching the transaction factory should not have much impacts on projects only using regular transactions, included on performances, while it is a bug source for other projects. Between the two transaction factories, the main difference when only using regular transactions is the fact the system aware one (and default one) will check on many occasions whether a system transaction is ongoing or not. This can be avoided by disabling the auto-join transaction feature, and explicitly asking the session to join the system transaction when you use one.
https://nhibernate.info/doc/nhibernate-reference/transactions.html#transactions-scopes
The rework on system transactions has introduced thread synchronization logic to avoid concurrency troubles occurring with distributed transactions. So far it seems to have fixed most of the issues NHibernate was having with distributed transaction scopes, so it is unlikely it will be undone. Maybe a "non-distributed system transaction" factory could be added for those not needing to support distributed transactions, and supposing the performance loss comes from these synchronizations. But things are very tricky there, a scope can be elevated to distributed on many unexpected cases. (Using ODBC data provider, or providers from SAP products (Sybase, Hana, ...) seems to always cause all scopes to be distributed; some other data-providers will go to distributed if opening, closing, reopening a connection in the scope, while others will not; ...)
About the bag troubles, it is most likely pointing to a latent bug in the application code, causing results to duplicated with older releases. Maybe your application has some mechanism to compensate for this, but for upgrading, you will have to handle them by avoiding fetching more than one bag. Frequently a bag is used in mappings where really a set should be used instead, so adjusting the mappings could be one way of solving the trouble.