I think I would turn the HUD-layer into a Singleton and add the effect as it's child in its
_ready-method. I still don't see why that would require the effect to add itself.
finding the HUD from the root game node is hard enough because I don't know how far down it is
You could always use
find_node("<NodeName>") for that.
should the game character really 'know' about the HUD?
Well, as long as it's in the scene tree, the player will "know" about it. However, I agree that it's good practice to keep the game and its HUD as separated and self-contained as possible. But again, that doesn't require nodes adding themselves to the tree.