You're doing it backwards.
Your child templates need to be rendered first, then registered to the container template, then that gets registered to the next container template, etc.
Also, you do not need to preRegister, you can just simply use register.
For example:
PHP Code:
$templatechildren = '';
//...Load the first child template
$templater = vB_Template::create('mychildtempalte1');
$templater->register('somevariable1', $somevariable1);
$templater->register('somevariable2', $somevariable2);
$templatechildren .= $templater->render();
//...Load the second child template
$templater = vB_Template::create('mychildtempalte2');
$templater->register('somevariable21', $somevariable21);
$templater->register('somevariable22', $somevariable22);
$templatechildren .= $templater->render();
//Create the container template
$templater = vB_Template::create('mycontainertemplate');
$templater->register('templatechildren', $templatechildren);
$template_hook[some_position] .= $templater->render();