Do you keep a record of which work has been assigned to which worker?
Yes.
Only the work (nonce? is that what it's called?) changes,
'Nonce' is 32bit number, which every miner iterate over to find a valid share. Nonce is valid only for given job, which is bounded to specific worker. So malicious Tor exit cannot pick your share and submit it as own. He can only corrupt/refuse the submit request or so.
I reduced the ask rate to every 10sec, so it pauses less often.
With rising ask rate you have bigger chance to hit stall share. That means, if you get work from pool and then new bitcoin block is found, your submit from this share will be invalid. With 10sec ask rate and Tor latencies, you are on ~15 second delay. Bitcoin block is found in average every 600 seconds (practically it is less, because Bitcoin network is growing rapidly), so your average overhead is 15/600 = 2.5%. So 2.5% of your hashing power is wasted. Not an extreme, but you have to count with it.