The List and ExecuteSQL functions both fill this need already. Have you tried them?
and virtual lists where more than one portal relationship needs to tie to one parent.
Portals can print fine as long as they don't have to cross page breaks. Placing Portals in sub summaries can prevent portals from breaking across page breaks. Creating complex print layout can take a lot of time and work to create. By utilizing all of the layout parts, portals, container fields, merge fields, virtual lists, calcs (like: List; getlayoutattribute) and sliding I've been able to reproduce every complex layout that I have needed.
What I would really like to be able to do is embed a layout on another layout or have mutliple body layout parts to print lists from multiple tables or link multiple copies on a field where the text can flow from one copy to another (you could do this 20 years ago with the Clarisworks database)