Thank you for answer, which confirms my suggestions that there is no approach which will provide custom FOV, Subsurface Scattering support, proper shadow casting and proper arms/gun self-shadowing simultaneously 
I also tried approach with ShaderGraph with custom function node in vertex stage
#define FIRST_PERSON_FOV 60
void ApplyFirstPersonProjection_float(float3 objectPosition, out float3 projectedObjectPosition) {
projectedObjectPosition = objectPosition;
#if SHADERPASS==SHADERPASS_SHADOWS
return;
#endif
float3 viewPosition = TransformWorldToView(TransformObjectToWorld(objectPosition));
viewPosition.xy *= -rcp(UNITY_MATRIX_P[1][1] * tan(0.5 * FIRST_PERSON_FOV * PI / 180));
projectedObjectPosition = TransformWorldToObject(mul(UNITY_MATRIX_I_V, float4(viewPosition, 1)).xyz);
}
Then I assigned material with FirstPerson_Projection ShaderGraph to arms and gun of character and in general it preserves individual FOV, casts proper shadows on planet surface, looks properly under water and supports FSR
But arms and gun have incorrect self-shadowing (probably because visible geometry is scaled in vertex stage to preserve first person FOV, but shadow geometry must be unscaled to look propely on environment surfaces)
So if use custom ShaderGraph to preserve first person FOV for arms with gun, then either self-shadowing will be incorrect, or shadow of player character will have incorrect proportions (if scale vertices both for shadow geometry and visible geometry).
Then I tried approach with custom pass, and changed material for character arms so it doesn’t use Subsurface Scattering and in general looks similar to original material
And duplicated body skinned mesh with gun meshes, set Default layer and Shadows Only mode for all copies
So it seems that custom pass is the best possible option, it preserves separate FOV for character arms and gun, it can draw arms and gun on top of environment if needed, it works faster than setup with two cameras, it provides proper shadow casting and arms/gun self-shadowing. The only downside is that it doesn’t support Subsurface scattering, but it is possible to create copy of character’s arms material without Subsurface scattering and switch material when player enters first person mode.