I think you're right, that is the problem.
When you read the frequency faster than you can end the sound that's going to happen.
Is tone 3 always going to be last? If so then when you detect tone 3 and the other tones were not detected first then don't make tone3 true.
If otoh the tones can be made in any order then keep track of which was last and still keeps getting detected and "debounce" your flag setting.