I had a similar problem with over 20 of the same enemy on screen constantly making movement sounds. What I did was make an intermediate audio player. When ever an enemy wants to make a sound, it calls the intermediate sound player. The intermediate sound player then looks at a list of timers to see if that sound has passed its minimum time before it is allowed to actually be played. It generally works fairly well if the minimum-time-limit is set so a second sound can start once the first is about 70% finished.
IE: for each sound i have the following variables: minimumTimeUntillRepeat, timeUntillRepeatAllowed.
You will still get the impression of a lot of activity without jarring the ears with chaotic noise.
If you have 3 different footstep sounds, you’ll have to decide whether they sound ok each being able to be played at the same time, or whether they need to be considered as the same kind of sound and grouped together.