As i am hacking Metroid, and chose to replace the vanilla sound engine with a custom one.
I noticed some oddities of how the Vanilla Engine is implemented, especially regarding SoundFX.
will follow your project.
also not sure if you're familiar with snarfblam's MetroidTuner, basically bumbs and inserts song data.http://snarfblam.com/words/?p=282
i used it initially to a huge extent.
i also skim-read your document, and regarding the things that i know / am aware of, it seemed correct.
and you're definitely right about the engine's inflexibility, hence why i chose to replace it. Especially since the hack has a much larger rom / mapper (mmc1->mmc3) to work with.
There is also a patch for romhackers to make Metroid use a table of timbre values for tracks rather than hard-code them in an obnoxious way:
that's also interesting as i manually hex-edited those values in the past to get the desired timbre, sometimes also changing the address pointer to another set (and yes, that IS obnoxious lol); there are settings that define the same timbre for both square waves (which can be what you don't want), and some with distinct values for sq1 and sq2. (but you also got that right)