(A quick note: Your .3dm is set to mm but the model seems to be scaled for cm. I scaled the source model x10 for the below example)
First thing’s first, assuming we’re using vanilla, there’s no way (that I know of) to offset such a complex mesh without shrinkwrapping it afterwards. Reliably removing self-intersections is not (again, as far as I know) a solved problem.
To make the initial offset, you deconstruct the mesh, move the vertices along their normals then reconstruct it. This will result in a self-intersecting mesh that you can then shrinkwrap with whatever settings you need to achieve the desired quality. The roots of the gaps between fingers need a very short edge length to resolve well.
These settings seem ok, and produce a mesh of similar face count. Mesh boolean should let you hollow it out.
A uniform offset is easy, just multiply the normals by the required distance as in this example.
Achieving varied offsets could be done in many ways. You could have point/line/surface “attractors” in the world, with tests for how close the points are to weigh their effect on the offset magnitude. You could use Point in Brep to only affect a specific number of points. You could use an image lookup and “paint” the offsets (so long as you only want 2D control). Or you could even install the Mesh Paint plugin for Rhino and paint the offsets directly onto the source mesh as shades of grey. The colour of each vertex is exposed by the Deconstruct Mesh component so this is a very simple method on the GH side.
A completely different approach would be to use the Isopod plugin. Offsets are trivial in the world of Signed Distance Fields, because the world is full of a “field” that knows how far it is from the surface of the geometry. This kind of cross section can be taken anywhere and will always show nice concentric shells.
I have no experience with this however, so can give no pointers, but it seems like an ideal tool for this problem.

