Firstly, it's possible to play an animation on a different event than the currently processing one- if you used two events, a parallel one could play the animation on the interactive one.
Secondly, you can make things animated without using an event to repeat the animation- the easiest but possibly least good looking way is to make your animation into a sprite, a la the various sparkles in the "fire" sprite set you get by default, and the sound can come from a looping BGS instead of manually playing it. Other than that, I believe there's a few plugins that let you assign looping animations to play over specific events.