Hi Im still learning to reduce dependencies too & cant do c++. However you may be able to use soft references in your datatable (which acts as a directory to the asset unlike a hard reference). Then you use async load in bp graph to load the asset and then store it in a null actor hard reference in youre BP. See demistyfying soft references on youtube.
Also you can make crafting system only be dependent on actor refences (no custom bp hard references).
For example your widget may have an array of actors (not specific child) then you load from your soft references and set them in your array. You could then interface with these actors not needing to know which specific bp they are other than that they are actors and may implement the interface.