Hi,
I am not sure I follow why you want to move relative to the camera? the camery should follow the user instead, even when swimming I guess.
to apply "sinking", you don't need to edit the gravity, instead simply apply a down force, that will be more predictable, so that the user always have to swim "up" if you see what I mean. and with this, you can lower the down force if the user moves forward fast enough, in that way, you will need to change the downforce based on the player speed.
bye,
Jean