It sounds like you want Functions.
Signal is only used in conjunction with "wait for signal", I believe. If there is no blocks of code waiting for a signal, I don't believe it will have any effect. And signal won't trigger that code to re-run.
As for efficiency, I'd bet that you don't really need to worry about that in regards to functions.
You can nest an OR block in a function. Not sure why you would need a top level OR block with functions. That is kind of the point of functions - if you need two blocks of code to do the same thing, they can both call the same function.