If I understand what you want to do, you can create an animation and then set the time manually at runtime instead of letting it play. This way a single animation can define many attachment swaps or other behavior.
In many projects I create an animation with 1s duration, then at runtime I set the time between 0 and 1, like a percentage. This way I can have things animated at runtime, but not controlled by wall time like normal playback.