Turning off sprite DMA when it or bitplane DMA is on is the common reason for rolling sprites. The recommended method is to change sprite DMA only during vertical blank (as in: before the magic scanline, see Toni's comment).
It's untested whether setting 0 bitplanes with dc.w $0100,$0200 is a suitable replacement. Any write to BPLCON0 enables bitplane DMA and so should enable sprite DMA IIRC and not work. Maybe Toni could verify.
Hmm, I hesitate moving this and the other sprite thread in General to Asm/Hardware, because there's already one there...
Maybe I should, anyway?