I'd also go with the sample instance method. My method uses fixed ones though. E.g. if I say I want at most 8 bullet sounds at the same time and at most 4 explosion sounds at the same time, I create 8 bullet instances and 4 explosion instances.
Then when I play a bullet sound and there is an unused instance, I use that. Otherwise I stop the oldest of the 8 playing bullet sounds and replace it with the new one.
Releated to priority, A5 also makes it very easy to use different mixers. For example, use one mixer for sound effects, one mixer for user-interface sounds, one for voice overlays, one for ambient sounds, one for music. Then attach all of those mixers to the default mixer. That way you can control the volume of all your sound channels independently (e.g. to allow the user setting the volumes in the configuration). Or also do things like lower the effects volume while a user interface sound is playing.