Looking at how Weblinks works I can see that the only time weblinks.go gets involved is when you have have an option selected to count Hits for each link causing view.html.php to display this style of link:
$item->link = JRoute::_('index.php?option=com_weblinks&task=weblink.go&id=' . $item->id);
at line 88 of default_items.php
I would ...
It doesn't look like you are including the menu Itemid in your redirect which is why your URL is changing. Add another hidden field with the value of your current Itemid. Your redirect code is fine just add the &Itemid= portion to include the value that you are passing.