Yes, that whole getResources call is going to be evaluated and all of its output stored in memory whether it's used or not. That's going to be pretty slow and wasteful. Calling The If snippet uncached (!If) might make it work, but I don't think it's a good approach to begin with.
One solution is to just have a different template for documents at the root. That would allow MODX to cache the results.
If you're determined to have it be dynamic, I think I would do it this way (untested). Replace what you have above with this tag:
Create this snippet called CheckParent (or whatever you like as long as it matches the tag):
/* CheckParent snippet */
/* do nothing for empty parent */
if ($modx->resource->get('parent')) return '';
/* Set getResources Properties */
$fields = array(
'showHidden' => '1',
'includeContent' => '1',
'tpl' => 'news-list-tpl',
'parents' => $modx->resource->get('id'),
'processTVs' => '1',
'includeTVs' => '1',
'tvPrefix' => '',
'sortdir' => 'ASC',
'limit' => '2',
'sortby' => '{"publishedon":"DESC"}',
);
/* Call getResources */
return $modx->runSnippet('getResources', $fields);