The correct approach is to first apply DocumentBuilder to your source document, extracting the desired content. DocumentBuilder works at the block-level, not run-level, so you can only extract complete paragraphs and tables from the source document – this is a built-in limitation to DocumentBuilder.
You can do this in memory, of course.
Then insert your extracted content at the correct location in the template document, as appropriate.
I don’t have an examples that show directly how to do what you want to do, but this is all certainly doable – extract the content into a new WmlDocument, and then insert that content using the approach shown in the example that you are looking at.