Thanks for the suggestion, I have thought along these lines as well. That is much boiler plate code and indirections for little gain. With current tooling navigating OOP code is already a challenge sometimes, even if it is kept simple with small and shallow class hierarchies.
On a side node, a few years ago, somebody suggested a two-pass compile step for gfortran. First pass creates mod files and needs to respect dependencies. Second pass really compiles the code and can be done fully parallel. However, with my profiling numbers of gfortran in mind, this might not be that fast, as compiling and code generation was the smaller part in larger projects. Handling the huge symbol tables was what killed the performance, and that would be not much different with such a two-pass approach.