I've been messing around with Layer 2 levels and had some hiccups I haven't managed to work out. The limitations seem to be common knowledge based on random comments I've seen on various posts/submissions, but I can't find them spelled out anywhere or how/if they can be worked around.
To confirm, my levels are set to this:

Issue 1:
I have partially underwater levels I've implemented by adding water tiles to Layer 2. This seems the best way to implement a SMB3 style level with both water and land since it doesn't leave a bunch of unsightly clear gaps everwhere. This technique has worked quite well for me.
EXCEPT when Mario goes through a pipe or a powerup is rising up from a block.


They work, but the sprite is hidden underneath the water tile til the move is done. I know this isn't a Layer 2 specific thing and that Mario basically goes behind any block when traveling through a pipe, not just priority ones. I get why the game would do that (though I'd rather just set all pipes as priority), but I don't see how I can get around this (tolerable) annoyance.
Issue 2:
More seriously, I've learned that an auto scrolling layer 2 that goes past the end doesn't loop immediately.
I started making a train level with high ideas of tunnels and light strips and all sorts of other fun things. Layer 2 auto scrolls.


I found that layer 2 has to be interactive to make it respect priority tiles, letting me have foreground objects that blur past.

Okay, not an original idea. But it looks good in motion. For abot 15 seconds. Then...

Garbage! The layer loops around alright, but over twice as much as it presumably should. Mode 01, the non-interactive Layer 2 mode (which doesn't respect priority), also does this. I want priority tiles in my scrolling background--failing that, I at least want a large one for added character.
Is there anything I can do to make layer 2 work the way I want it to? To loop before the garbage?
If not, is there a way I can get something reasonably close to what I want using some other method? I haven't fiddled with Layer 3 at all so I don't know if that's the sort of thing it's good for.
To confirm, my levels are set to this:

Issue 1:
I have partially underwater levels I've implemented by adding water tiles to Layer 2. This seems the best way to implement a SMB3 style level with both water and land since it doesn't leave a bunch of unsightly clear gaps everwhere. This technique has worked quite well for me.
EXCEPT when Mario goes through a pipe or a powerup is rising up from a block.


They work, but the sprite is hidden underneath the water tile til the move is done. I know this isn't a Layer 2 specific thing and that Mario basically goes behind any block when traveling through a pipe, not just priority ones. I get why the game would do that (though I'd rather just set all pipes as priority), but I don't see how I can get around this (tolerable) annoyance.
Issue 2:
More seriously, I've learned that an auto scrolling layer 2 that goes past the end doesn't loop immediately.
I started making a train level with high ideas of tunnels and light strips and all sorts of other fun things. Layer 2 auto scrolls.


I found that layer 2 has to be interactive to make it respect priority tiles, letting me have foreground objects that blur past.

Okay, not an original idea. But it looks good in motion. For abot 15 seconds. Then...

Garbage! The layer loops around alright, but over twice as much as it presumably should. Mode 01, the non-interactive Layer 2 mode (which doesn't respect priority), also does this. I want priority tiles in my scrolling background--failing that, I at least want a large one for added character.
Is there anything I can do to make layer 2 work the way I want it to? To loop before the garbage?
If not, is there a way I can get something reasonably close to what I want using some other method? I haven't fiddled with Layer 3 at all so I don't know if that's the sort of thing it's good for.