Basic idea is to store fileversion in Library datablock, and split again Main by libraries after lib linking, do_versions_after_liblink on those separated Mains, and merge again.
This allows to still have correct versions for each data-block in that second do_versions step.