Squid in front of Apache will be able to handle heap of TCP connections and keep private systems off the public wires.
Apache can abuse sendfile() to serve static files off the NAS at no CPU cost.
PHP connection pooling with careful programming will keep SQL backend cluster happy.
I see no purpose for memcache - network interconnets are like 8Gbps FC (800MB/s) or 1GbE(100MB/s), but computer memory is like 8GB/s, so better add more RAM instead of dedicated cache machines.
PostgreSQL or FireBird has more functionality contained in database to serve as backend
Sharing dependent FC NAS spaces between databases and lots of other IO can slow it down.
If you have that multi-controller SAN you are fine.
Databases can be improved with transactional logs on solid state disks - smallest of fastest (like two in RAID0) are best choice.
gentoo is known to push most out of CPU for vconv part, for rest about anything does with kernel tuning.
VMFS does not share files between machines, it only makes images of systems for live migration shared.
To summarize - frontend Squid(s) does only network processing, not using storage, no secrets on the end of wire, can do logging - Gentoo good... For rest normal system can be tuned to spec.
QuadCore xeon is hyperthreading actually and you have to use processor binding in vmware.
Why not double quadcore processor setup?
Something is strange with your assumptions 10GB photos is at most 10000 files - what normal digital camera is able to produce running non-stop.
Hope I caused some doubts, if you have more feel free to share.