This is a nice case of how node based geometry generation can create crazy stuff. First off, you'll never guess who this is in the following Blend file:
You will need the latest iteration of Animation Nodes, which you can currently get from here: https://github.com/JacquesLucke/animation_nodes Click Clone or Download and choose download .ZIP, then install as usual.
I've put a lot of comments directly into the node tree to explain what each section is doing, so I won't repeat all of it here. Just the basic concept: I'm using a bunch of points, generated by a Vector Wiggle node in a loop, plus an empty which defines the area where most vessels shall grow from, plus a few parameters to control all the effect. The magic nodes that enable it is the BVH nodes, found in the Node Tree under Shift + A -> KD & BVH Tree. Those nodes allow you to split up a mesh into a BVH Tree, and then calculate distances, find closest points, project points back onto the mesh, and so on.
I'm then generating random points using Vector Wiggle, and then comparing their location to the BVH Tree. There is a node which can check if a point is inside or outside the mesh, and in conjunction with the switch node and the Find nearest surface point node (kind of a Shrinkwrap for Animation Nodes) I can pull back 3D points which went out of the mesh back onto the mesh surface.
There was an issue which I was then fighting for a long time, which is the nature of Shrinkwrapping: Two Spline Points could get disclocated quite far from each other this way. I dunno if it is a glitch or the nature of math, but my approach to it was to resample the whole spline again in another loop, and reproject the stray areas again. This way, the spline would adaptively get closer to the volume / surface, and the shape becomes readable.
For the beveling of the Spline I used Blenders standard tools, so a Spline Curve to define the profile, and the bevel parameters in the Object data tab.
For more info, please study the Blend File, and if you find improvements, please let me knoe.
Important: For performance reasons, Auto Execute is turned OFF in the file, you'll need to either change a property or click Execute Node Tree explicitly
Here is a few screenshots of areas of the node tree:
Main Program, with a single vessel in 3D:
Run on a Default cube, the controller in a corner:
setting first parameters:
The Vector Wiggle in action, creating the main points of the spline, which will be edited later again:
preparing the spline for resampling, and then smoothing it out:
the resampling sub-loop in detail: