It seems to me that your problem is that your definition of "freeze" seems to allow fixes for QA issues. So, not a freeze at all if the idea is to give QA a chance to have a clean testing framework on Wednesday.
I see two alternatives:
-
Make Tuesday a true freeze. Any defects found by QA drop that feature out of the Thursday release.
-
Stop "throwing features over the wall" to QA. Make the QA testers/process part of the development team/process. Features are considered "done" and ready for submission to production only once tested. Freeze on Thursday morning with only integration testing to be done before release.
In truth, both approaches yield the same results. If programmers have to get it right by Tuesday, then they'll need to work more closely with QA during development. Eventually, the Wednesday testing becomes little more than a rubber stamp and they'll push to move the freeze back to Wednesday.
Most importantly it seems that in this situation the "definition of done", has to be more than just "coding completed".