I faced a similar problem with the explosion sounds of a shoot'em up game. Sometimes they occur almost at the same time, so they sound like if they gain a lot of dB.
A solution that worked for me was to allow explosion sound playing only if a little time was elapsed after the last explosion sound played, to avoid overlapping. You can use the delta time you have in the update: method for this. For example:
if (explosionTimeElapsed > 0.08f)
explosionTimeElapsed = 0;
// play explosion sound effect
explosionTimeElapsed += delta;
Also it helps to have all sound effects at the same low level, for example, -3dB. This will avoid distortion when they overlap.
Hope this helps!