The main problem is that the node tree was not properly updated after a property in the tree changed. More specifically, the collection pointer in the Collection Info node was cleared, but the node tree was not updated after that (usually this is handled by rna updates).
ID remapping only updated the node tree under specific circumstances so far using libblock_remap_data_postprocess_nodetree_update. However, currently that only updates node trees when the remapped id is a node tree as well. Unfortunately, we don't really have a system for dependencies between dna data yet which is why these postprocess operations are necessary.
A potential solution is to tag all the node trees that changed for update during the remap phase and then do the update afterwards. I'm mainly not sure at which point the update should happen. Should it be part of the id remap or happen later as part of the operator. Making it part of the operator requires changes in more places but has the benefit that the correct notifiers for certain node tree changes can be send as well (we don't really send notifiers from blenkernel afaik).