With this very precise information I was able to make a quick patch to the VHDL code to fix the bug, resynthesise it, and send Deft the bitstream, which he confirmed on his board fixes the problem. So now it looks like:
At the same time I also made $D055 select whether to make sprites the normal 21 pixels high, or allow them to be a variable height (set via $D056), but this hasn't been tested yet.