I'm not 100% on this, but based on how passive streaming works the file header (magic number) will be encountered first. If you are set to block EXE files that match (and block) will occur before the entire file has been seen and a MD5 calculated for possible matching against your whitelist. Assuming this is the case, I can think of a couple of possible workarounds:
1) Enable Deep Scanning for the exe file type only, but be warned that this may dramatically increase CPU load on the firewall depending on how much traffic you are inspecting with Anti-Virus. Deep Scanning will force the entire file to be streamed, reconstructed and then scanned. This may avoid the file being dropped early before the whitelist MD5 can be matched, but I don't think you will be able to block all other exe's.
2) Try creating a custom indicator MD5 signature for the file, although I'm not sure if these are matched before the file header check. See the "Indicators" section of sk92264: ATRG: Anti-Bot and Anti-Virus
Gateway Performance Optimization R81.20 Course
now available at maxpowerfirewalls.com