I was able to achieve something simular to what you are trying to do by using a combination of menu_set_active_item() and
menu_execute_active_handler()
It took a little while to realize that I needed both. I was using a custom menu handler to create "clean urls" from Solr filter combinations. the $path variable is the internal drupal path that I am hiding, and the menu handler is what the user sees in their browser.
I then used custom_url_rewrite_outbound() to convert all relevant search links on the site to the format I wanted.
Below are the relevent parts of the code. I'm not sure if this is what you are looking for, but it might give you some ideas. I was impressed at how much you could control what the user saw and what Drupal was aware of internally. The proper menu items were active, and everything else worked as expected.
function myModule_search_menu(){
$items['browse/%menu_tail'] = array(
'title' => 'browse',
'description' => 'Search Replacement with clean urls.',
'page callback' => 'myModule_search_browse',
'access arguments' => array('search content'),
);
}
function myModule_search_browse(){
/* do lots of fancy stuff */
menu_set_active_item($path);
return menu_execute_active_handler($path);
}