There are two approaches to the problem depending on whether we want to natively support redistribution or not.
To recap, a redistribution of a node (N_1) happens when it's distributed to an insertion point (I_1) inside a shadow root (S_1), and I_1's parent also has a shadow root which contains an insertion point which ends picking up N_1. e.g. the original tree may look like:
(host of S_1) - S_1
+ N_1 + (host of S_2) - S_2
+ I_1 + I_2