I ended up doing what you do in 3D software in general, which is to add a dummy object as a pivot point and parent it to what you want to move along the track. Then whenever you want to add a relative rotation, you just do it to the child, and the spline will still affect the rotation on the parent.
This will also serve as a work-around for the Y-forward vs X-forward bug.