How can I programatically select the node template to render a node in Drupal 7
Unless I am missing something here, this is a classic job for hook_preprocess_node(), eg...

function YOURMODULEORTHEME_preprocess_node(&amp;variables) {

  if ( /* whatever logic */ ) {
    $variables['theme_hook_suggestions'][] = 'node__YOURNODETYPE_public';
  }

  // other preprocessing here

}


...which would cause Drupal to look for a node--YOURNODETYPE-public.tpl.php template when whatever logic was true.

Read Working with Template Suggestions and Theme Suggestions for a lot more info on all of this.