It sounds like you’ve got quite far already. I think a kangaroo/mesh machine based approach could work. Perhaps you could have a stage after the output of a kangaroo process where you could bake out points, and then manipulate them manually (to achieve sharper edges/tolerances around specific parts) and then reference them back in to do the geometry creation. I’m sure others on here will have more ideas.
Maybe take a look at something like this;