[edit: conclusion first. i am fairly certain that both of your objections, about joining multiple surfaces, and effectively trimming them with arbitrary curves, can be satisfactorily dealt with. this is true for Silk, and any other method you may want to use to generate multiple surfaces, like Curves WB, or Surface WB]
I don't know if Silk will be up to what you need, but since the Gordon surfaces are no longer meeting your needs, it's worth an exploration.
Ignoring Silk itself for now, i want to tell you about some non obvious FreeCAD features. everything i show below is possible through the Part WB, but i definitely recommend using the Curves WB version of some of these tools, since Curves WB produces parametric versions of the same operations.
joining surfaces: 2 options, one theoretical, one practical
option 1: Part WB, tool: shape builder, option: shell from faces. this stitches any group of surfaces into a shell patch. now it is considered one surface by other operations.
option 2: Curves WB, tool:makeParametricSolid. if the chosen set of surfaces is closed, it makes a solid, but if it has a hole, the tool returns a shell (grouped surfaces). the final object is a the same as shell from faces, but it is parametric and will update.
below, i ctrl-select all the Silk surfaces from my fin model, click make ParametricSolid, and it returns a unified shell projected curve: this actually falls under the topic of intersecting surfaces, which solid booleans do all day long. the key is that since FreeCAD can do it with solids, it can also do it with surfaces. always. because the solids are nothing more than their bounding surfaces (this is what B-Rep, boundary representation is all about. all modern CAD is B-Rep).
your projected curve is actually the intersection curve of the extrusion of your cutting curve with your design surface.
easier with pictures:
i prepare my cut curve, but instead of 'projecting' it by specifying a direction, i extrude it as a surface (make solid = false)
so now i have some overlapping surfaces. notice that the intersection of these surfaces produces the type of cut you showed, but it skips the projection step.
if the objects were solids we could use various booleans: cut, union, intersection...
i'll show those individual cases later, but right now, lets go straight to the best tool: Part WB, tool: boolean fragments (without creating solids)
select both surfaces, apply boolean frgaments. from the result, i can select individual cut pieces