Locking a vertex group from modification
I think you outlined most of the the good ways, but here is another option:
Mask modifier:
You could try using the Mask modifier:

Add a mask modifier, select your vertex group and enable Invert so the vertex group is hidden.

Enable Edit mode visibility and Apply to edit cage so that there is no way to select the vertex group elements in edit mode:



This will basically function like hiding geometry, except it gives more control and does not interfere with normal hiding.
Note that it does not work in sculpt mode (hidden geometry will still be sculpted)
Shape keys:
However, I Think Shape keys is the way to go as it works for both modeling and sculpting.
To set this up:

Add vertex group of all the geometry to want to modify (excluding the geometry you want to lock)

Add two shape keys, a Basis and a shape key. Set the Value of the shape key to 1 and do your modeling sculpting etc.

Set the Blend group to your &quot;modifiable&quot; group. Now only the modifiable geometry will be moved to the new shapekey position, the rest will remain in the Basis position: