Note that long addresses only add one cycle over a 16-bit address, so they're not as costly as you might expect. You would need to set the bank to $00 and restore it in less than
EDIT: Just noticed that you're doing txa; sta ^DMAMODE because stx and sty don't have a long addressing mode, so it's 9 cycles rather than 5 cycles. I'm not sure if it can be done even in 9 cycles though.