I think there are ways to make this work without runtime search. For example when add-on is disabled mapping cache can be deleted and on enabling cache can be created again if it's not present. That way at dev time restarted add-on will pick up new modules, and there will be no run-time cost. Going with runtime search and having  install time optimization maybe another option, which should make
things like hacking with scratchpad a lot easier. Either way I think this may become a serious performance killer if not though out through properly. Yet another solution can be to make loader async, so that it would resolve all the dependencies in the background thread before starting an add-on. And only after start an add-on. 

Point is all of these have pros and cons, I would like to see some analyzes over different approaches and pros and cons to make a right
choice that fits best our use cases.