The most important rule: Once a SpecObject has been created, its Identifier must never change, period. This is what ReqIF relies on to match SpecObjects on a roundtrip-return. In fact, if the Identifier changes, you’re not ReqIF-compliant any more. Therefore, you are correct: You need to build a mapping table.
Regarding the AlternativeId: Once assigned, this must never be changed either. So I don’t think it helps you in your situation. It was introduced to give tools more flexibility. But honestly, I would stay away from it. It’s also used to deal with compatibility to the older RIF format, which was the predecessor of ReqIF.
In practice, all ReqIF importers and exporters maintain a mapping table between ReqIF IDs and references to the requirements in their tool. So that’s best practice.
I hope this helps!
Best – Michael