If my description misled you this way, sorry; the 1-up only prevents sound effects (Play_Sound_2 or Play_Sound with a SFX index), another 1-up or the S&K Credits song from playing. All other music (if queued with Play_Sound) will not be wiped out, and will play when the 1-up song ends. Even the S&K Credits song is only harmed because it is kind of hacked-in, even in the original game.
In some ways, it would be kind of easy: since the 1-up song is not supposed to be affected by the speedup, then 3 things need to be done: (1) eliminate the code that backs-up speedup values when starting 1-up song; (2) eliminate the code that restores of speedup values when 1-up song ends; (3) disable tempo speedup when 1-up is playing. The first two require commenting a few lines, the latter one can be done with 2 or 3 lines of additional code (even for multiple 1-up songs if done right).
I don't see anything that causes it not to behave like that other than a call to zMusicFade; other than that, using Change_Music_Tempo while changing the tempo should work, unless I am being dense.
Yes; the entire sound driver, including tables and variables, must fit inside the $2000 bytes of z80 RAM. The S1/S2 flutters take up a good bit; if you notice by the end, I split them up in a part before 1300h and part after; this is so the tables do not overrun the RAM variables. I don't recall exactly how much space is available before 1300h, but it isn't much.