The easy way to store URLs with periods that I had in mind would be to reinsert the periods during a save post action or similar, after the mechanism that changed to hyphens in the first place. You run into the same issue though of being unable to distinguish intentional hyphens from automatically inserted hyphens.
Better would be to intervene with the actual slug creation routine. Much of this is javascript, but I believe an AJAX query is made, and the PHP handler uses wp_unique_post_slug()
to return the periodless slug. I’m not 100% sure of this, I have limited resources right now to make a proper confirmation. It’s something along this line though. There is a filter of the same name as the function that could be used to restore only those periods that were in the initial title string.
The problem remains that the query cannot find a slug with periods. You might see if querying for a slug with hyphens will properly locate a post where the slug is actually periods, a reverse of the current situation. Somehow, I don’t think the query will find it. You might also try escaping the periods before the query, this sounds a little more promising.
About the “incorrect slug”. It’s not really incorrect. I meant in the situation where you enter a slug with periods, it will find the actual slug with hyphens, the current situation. Any permalinks will thus have hyphens, correctly so. But finding such a slug when the query string has periods is done unknown to the browser, so the browser continues to show a slug with periods. Everything on the WP side will be assuming hyphens are correct.