Thanks for your answer!
It's good to read that module hierarchy does not have to be pure inheritance.
Indeed I try to avoid having excessive depth in my modules hierarchy. I use it only to create compartments for autonomous code.
I don't think I would end up with the last situation you described, as it would indeed lead to a high quantity of redundant code.
I indeed know about the OO nomenclature and the objects I'm dealing with constitute really a composition. Thanks for the reminder!