I managed to resolve my issue, and I think it is particular to the product overview component (PRD01OV).
The only way to switch off the data loss popup is to call DO_CLEANUP_CONTEXT to deregister the method ON_BEFORE_WA_CONTENT_CHANGE as the change handler for event BEFORE_WORKAREA_CONTENT_CHANGE, because it is private.
Because DO_CLEANUP_CONTEXT, however, is also protected, the creation of the BT can happen only after calling DO_CLEANUP_CONTEXT, because it ends the GenIL transaction (which I think is what deletes the BT reference if you create it before).
Thus I have put the creation of the BT and navigation after a call to DO_CLEANUP_CONTEXT in an outbound plug on the window or alternatively create a public method that calls DO_CLEANUP_CONTEXT (which is preferable). This resolves the issue, although it complicates things unnecessarily.