Looks like it doesn't work on a local setup. Anyways, here is what I have to say:
I process the shortcodes so as to take in account of actual markup that is there after plugins like Nextgen have rendered their galleries. I am sure there will be cases where this needs to be done.
Shortcode is by no means to be processed only once per page load. Its just like retrieving content with some on-the-fly modifications because we don't want them to be permanent.
I understand you are trying to process form submission inside a shortcode but I see two ways of doing it, which are:
1) Don't use the same url for submission, may be use a different endpoint. This way you only process the submission when you are on that particular URL. (Another instance - http://wordpress.stackexchange.com/questions/3902/best-practices-for-creating-and-handling-forms-with-plugins)
2) Set a flag to process it only once. Like add a VERY UNIQUE key to the global $wpdb object indicating the form has been submitted, and only process it if that key in $wpdb object doesn't exist yet.
Hope that helps! And very interesting question, though I am surprised I never ran into such a thing. Happy coding :)
P.S. - I have asked the Question on WPSE for more developers feedback on approach #2 - http://wordpress.stackexchange.com/questions/57548/handling-form-submissions-in-shortcodes