How do I pick an optimal window size for overlap add/save method algorithmically
The optimal size is likely not just algorithmic, but depends on the cache sizes and levels and the compute-to-memory-bandwidth ratio for the particular processors and systems(s) on which you plan to run this code.  Also, your applications latency requirements (which filling big FFTs add).