How do you handle long runtime updates needed in hook_install()?
My suggestion is to not make it automatic on install. Provide a page from where an admin can launch the batch job.

However, if it absolutely must be automated, I have a suggestion, albeit a some what crude such:

hook_init() {
  $run_batch = variable_get('NOT_INSTALLED_YET', FALSE);
  if ($run_batch) {
    // Redirect to batch launch, or possible just set an approprite message.
  }
}

hook_install() {
  variable_set('NOT_INSTALLED_YET', TRUE);
}