Core forum hook_menu_local_tasks_alter() override
You're right in not wanting to mess with core; it makes things tricky when you're trying to update to a new version of Drupal. You have to maintain patch files which may break with new core code and it just gets messy.

Fortunately Drupal does provide a method to handle exactly what you're after.

In Drupal 7 hook implementations are alterable, so you can use hook_module_implements_alter() to stop forum_menu_local_tasks_alter() from ever running:

function MYMODULE_module_implements_alter(&amp;$implementations, $hook) {
  if ($hook == 'menu_local_tasks_alter') {
    unset($implementations['forum']);
  }
}


You'll need to copy the code from forum_menu_local_tasks_alter() and put it in your own mymodule_local_tasks_alter() function, and just replace the call to forum_forum_load() with the call to your mymodule_forum_load() function.