First of all, I know you not prefer to use a sef component for url's but I use it because I want a specific url and there isn't a way to set this up in virtuemart.
But what i wanted to say. I have setup a menu item to a specific category, that gives me the next non-sef url; why there is a categorylayout, I don't know, maybe someone know how I can delete that.
index.php?option=com_virtuemart&categorylayout=0&view=category&virtuemart_category_id=7
Now, when I enter the page there will be generated a Canonical url, this function uses this non-sef url; you see, no categorylayout, but it goes to the same place.
index.php?option=com_virtuemart&view=category&virtuemart_category_id=7
Now the function getLimitBox use the next url; you see, there is a the categorylayout again and suddenly a language, where was it before
index.php?option=com_virtuemart&categorylayout=0&language=xx-XX&view=category&virtuemart_category_id=7&filter_product=&keyword=&limit=xx
And at last the function getSortBy, this one also generates a different link.
Why don't you use the same non-sef link for every place? With or without categorylayout=0 and language=xx-XX