Using hook_language_types_info_alter
variables was definitely the key here. In my hook_language_types_info_alter hook, simply updating the variable with my callback did the trick:

/**
 * Implements hook_language_types_info_alter()
 */
function MODULE_language_types_info_alter(array &amp;$language_types) {
  $config = variable_get("language_negotiation_" . LANGUAGE_TYPE_URL);

  // put my callback first, since the first one to return a language wins.
  $newconfig['MODULE_provider']['callbacks']['language'] = 'MODULE_language_provider_callback';
  $newconfig['MODULE_provider']['file'] = drupal_get_path('module', 'MODULE') . '/MODULE.module';
  $newconfig += $config;

  variable_set("language_negotiation_" . LANGUAGE_TYPE_URL, $newconfig);
}