It might be a little late now, but since you mentioned Modelsim:
There’s a feature of Modelsim called SignalSpy.
With these functions you can access any signal of instances below your testbench, working similar to the way you proposed in the beginning.
Here’s how to use it:
Have a nice simulation