The suggestion from Starfighter was to hook one (or more) calls to the function instead, and call the original after running my code. To avoid this, ideally I would like to hook all calls to PlayerCameraUpdate and modify the camera values right before they are used, but I don't really know how to do that without breaking the behavior of the function.
I have also tried to offset the values of PlayerDataTable.CockpitPositionTransformed without changing the current input hook (0x4F9A61), but it does not seem to work, I guess they get overwritten before the call to PlayerCameraUpdate.