What about the the treeview/gridview?
Maybe you could achieve it with your solution A by having multiple listening dataviews with conditional visibility. It’s just an idea that is not worked out yet. :-)
I think you were on the right track with having multiple nested listviews. I think the challenging part would be styling them to look like a navigation tree. In the past we’ve created a custom navigation tree using a table and microflow buttons that were styled to look like the navigation tree.
For the expand you could use conditional visibility or check out the group box helper widget.
https://appstore.home.mendix.com/link/app/50369/ITvisors/GroupboxHelperWidget