I fixed it. Bitsy color sets the tileColorStartIndex to 16. And so bitsy considers the color that is index 0 to be transparent. But when you set the index to 16, the color of the sprite that is supposed to be transparent is no longer i = 0, its i =16. But bitsy is still looking at i = 0 to be the transparency in sprites. I set tileColorStartIndex to 0 and my sprites' transparency worked as expected, but my text + text box palette started using my sprites' palettes. So colours i = 0-15 are in use.
So I searched for the variable isTransparent and changed the (color === 0) to (color === 16) and that did it. Everything works as intended.