There were a few things we are doing. The most complicated one involves us traversing a movement system over the course of an animation, using montage sections to help us know when to move during the animation. Thus we need to know exactly how far the animation is through, what section it is in etc, even when its at the end fading out (We handle when we call stop on it).
Others are just trying to wait until the animation is fully done (including fade out) before we do other things. Having the same animation play again in these cases didnt really affect us, as the old code would just give us the newest one which was all we needed.
Using the pointers is not a bad option in some cases, on the other hand the issue you brought up isnt one we had to worry about. We might well change to it though so we are more clear about not using the anim instance functions.