"Fabricating" a unit

What you are describing sounds fairly straight forward, what are you having trouble with exactly?

Here is a (rough) way to go about it…

You have your “root” hull blueprint right? Inside that blueprint you can have a few Actor variables (for cannons, engines etc.) then your “root” blueprint will spawn whatever “attachment” blueprints you want to attach to it then save these spawned actors to the variables.
Then your root can communicate with those “attachments” (via interface messages or casting etc… whatever works for you).

For example your root will call a “fire” function that is inside your cannon actor, then the cannon can do damage depending on what type of cannon it is etc.

You can also make a “base” class for each type of attachment (one for engines, one for cannons, one for rudders) and then just change a few variables each time (like mesh, power, max ammo… whatever) instead of making a bunch of blueprints.