I've often needed the same set of transactions to be booked in two different ways, but defining separate end-to-end pipelines for each approach proved nearly impossible. My long-standing solution has been to use plugins to switch between “alternate booking worlds” on demand. For example, I rely heavily on the rename-accounts plugin, and here's another use case. In practice, I'm happy with one booking world 95% of the time and only occasionally switch to the other.
With that high level idea in mind, in your case, one idea would to have both bookings of the same transaction in your source, and use metadata + plugins to turn one set on and the other off.
You could also handle the price timing issue with a second plugin — for example, one that offsets all price entries by a day when enabled.