DISCLAIMER: I have little experience with MediaPlayer, and I do not know any successful experience with other APIs that I mention, and the following information is based on what I read in the DOC and what I read from the search queries Google
You can use mediaplayer (for background music) with other audio APIs, since MediaPlayer automatically starts its own stream, but I believe that it has a high CPU load, and I donโt think it will require compressed bits very well, but I donโt sure.
There's also JetPlayer http://developer.android.com/reference/android/media/JetPlayer.html , which seems to work a lot for efficient use, but it will work very well with playing background music and then playing other sounds on as needed in the game. From what I read about the DOC, a MIDI file is required (I think?), And you turn off the sound and turn on the tracks to make it work the way you want.
I like AudioTrack because it gives you the ability to edit sounds at runtime by changing the frequencies of the sound, and SoundPool can do the same.
Although for your situation, AudioTrack does not look like it will work well, because it will take two streams to play two sounds, because AudioTrack blocks (I'm sure).
And with SoundPool, I think that since you have 16 sounds, maybe in each thread there can be two threads with one SoundPool and apply 8 sounds for each SoundPool. I really don't know, though, since I haven't even tried to use SoundPool.
And again, my information is not based on experience, but on what I see from what I read, so I can be completely or maybe just wrong, or, hell, who knows.
And I don't know anything about SoundPool errors since I did not investigate it.