in general app components are perfectly composable. It is also possible to create an app component that under the hood uses another app component. I do that quite regularly. E.g. in the attachable component it uses multiple other app component (see here: https://github.com/mariodavid/cuba-component-attachable/blob/master/build.gradle#L102-L108)
Back then I did a blog post that explains a little the idea and the different use-cases of app components in general: https://www.road-to-cuba-and-beyond.com/decompose-the-monolith/
So in your concrete case you can just create an app component:
special-reports which under the hood uses
reports. In your different usage-scenarios you use the wrapper component
special-reports instead of
reports directly. In your
special-reports component you now put all your logic that should extend / replace the functionality of the report addon.
scheduled-reports is another example, that does the very same thing: https://www.cuba-platform.com/marketplace/scheduled-reports/
I hope this helps as a starting point.