How to override default theme to custom module path theme
The "most drupal" approach would be to place a copy of your template in your theme's directory named page-mymodule.tpl.php (eg, page-PATH.tpl.php) and be done with it. However, there are some cases where you may want to do this theming in a module, in which case you could do something along these lines in mymodule.module:

  // tell drupal that you want to use page-mymodule.tpl.php if you
  // are looking at www.yourhost.com/mymodule

  function mymodule_preprocess_page(&amp;$vars) {

    if ($_GET['q']=='mymodule') {

      $vars['template_file']='page-mymodule';

      $vars['new_variable']=array('foo','bar','baz'); // $new_variable is now available in the template

    }

  }

  // tell drupal to look in .../mymodule/tpl/page
  // for page templates before looking anywhere else

  function mymodule_theme_registry_alter(&amp;$theme_registry) {

    $theme_hook = 'page'; 
    $modulepath = drupal_get_path('module', 'mymodule') . '/tpl/page';
    array_unshift($theme_registry[$theme_hook]['theme paths'], $modulepath);

  }


Now, if you have page-mymodule.tpl.php in the directory .../mymodule/tpl/page and you rebuild your theme registry, easy if you have the Admin Menu module installed, otherwise, just clear all your caches, you should be on your way to using a page template in your module for that path.  

(And, of course, in your page callback, you can return whatever content you want displayed in the content area of this template without using any of the theme functions you have in your original question.)

ADDITION:  you can use the preprocess_page() hook to add any number of variables that are to be available to the template.  So, in the above, you now have $new_variable available to use in there.