Since this will probably never be fixed, this is what I ended up doing...
((((displayheight - 114 - (displayheight /2)) - 114) * (1 - (LayerScrollRateY(bk.Layer) / 100) ))-(((global('oldyres') - 114 - (global('oldyres') /2)) - 114) * (1 - (LayerScrollRatey(bk.Layer) / 100) ))) + bk.y
Replace 114 with whatever half of your default vertical resolution is. Use oldres as a 'detector' for resolution changes (if oldres != display res, run the above math on all the 'bk' objects.
Anyways basically you put this family on any object that is ever on a parallaxing layer. If an object already has a family, just apply the above math to that whole family. If the object is on a gameplay layer, it'll know and won't move anything. It also doesn't require any variables or anything like that either.
Obviously this isn't an ideal solution and might not be appropriate for a lot of projects who might require certain backround objects not to move, but it's what ended up working for me.
Obviously this is an incomplete solution too, so you'll need to figure out the details of your implementation. If anyone really cares, maybe I'll make an example file to show how I'm handling things.