If you have a lot of memory to waste, you could also go full brute force and store 16 shifted versions of your bg image, Atari-style.
Then all you'd need to do is setting the bitplane pointers. Costs you probably about 1MB chipmem extra, so very expensive, unless you're able to shrink your image (I think not all 184 lines are needed for the bg?).
Would also not require you to care about different scroll register values for BOBs.
Have a nice swim!
EDIT: Argh, you're in 32bit fetch mode if I remember correctly, so that means probably 32 pre-shifted backgrouds - probably not enough mem for THAT.