Thanks;
The result is the same, the page content {content} tag is overwritten by the module, so anything which you put in the page content will disappear once one of the module's links are clicked.
So anyway, I could not find a solution that worked using just the page content and the module, so came up with a solution that works by modifying the main template and adding a bit of javascript /DOM.
Here's a summary of what I did:
1) Add a new <div> just above the {content} tag:
<h2>{title}</h2>
<div id="parents" style="display:none;">{cms_module module="my_module" what="menu" listtemplate="my_template"}</div>
{content}
2. Create a new Global Content Block: {global_content name='show_menus'}
{literal}
<script type="text/JavaScript">document.getElementById('parents').style.display = '';</script>
{/literal}
3. In the template that you use for the child list add the global content block:
{global_content name='show_menus'}
4. In your Page Content which displays the child lists (the initial page which gets over-written) also add the gcb:
{global_content name='show_menus'}
This works, by hiding the additional div on all other pages except for the ones loaded with the module template and the main page itself where you call the module from.
I really wanted to do it this way in the main template:
<h2>{title}</h2>
{if $page == "my_display"}<div><div id="parents">{cms_module module="my_module" what="menu" listtemplate="my_template"}</div></div>{/if}
{content}
But that again only works the first time the page is loaded, as the $page variable no longer contains the name of the page alias after a link is clicked, but a number which is generated by the module with the "&cntnt01returnid" GET variable.