If I'm reading the question correctly, this sentence really is the key to your problems:
The problem is persistence of the parameters of these filters. I can modify the SQL, but pass original query string does not seem to work 
the pass original querystring feature relies on the query string being present in the forms post.
In other words, if you have a page:
update.php
and you browse to it with a query string var:
update.php?id=4
and you have a form with the following action:
<form action="update.php" name="form1" method="post">
</form>
the query string is absent when the form posts, so the pass original query string setting does not have a query string to work with.
make sure any query string vars that are passed to the page are posted when the form posts, use the following for the forms action:
<?php echo $_SERVER["PHP_SELF"]; ?><?php echo (isset($_SERVER["QUERY_STRING"]) && $_SERVER["QUERY_STRING"] != "")?"?".$_SERVER["QUERY_STRING"]:""; ?>
example:
<form action="<?php echo $_SERVER["PHP_SELF"]; ?><?php echo (isset($_SERVER["QUERY_STRING"]) && $_SERVER["QUERY_STRING"] != "")?"?".$_SERVER["QUERY_STRING"]:""; ?>" name="form1" method="post">
</form>

