I added the same timeout as when the data dictionary changes and this resolves the issue. Basically, I am going with 98% of the process time required to process a hit. As the average is 0.2 second and only a few exceptions fall over 2.2 seconds, this helps to avoid this situation.
Note that a hit in progress, in such circumstance, might still work, even if it takes longer, assuming a multi threaded collision during the recycle. This would be the case if the rest of the process doesn't make use of the oApp object.
This recycle issue is a problem. Personally, I would only set it once a week. But, we cannot. We have to force the recycle based on the number of hits, at a specific time of the day or similar setting. But, in my case, once a week would be good enough and would diminish by 7 times the number of chances going into that situation.
We try to find the best time for the recycle. On a 24/7 Web site, it is not obvious. So, we go with when there are less traffic. This is usually during overnight in Eastern Time zone.