The Photon is easily capable of doing this using the standard TCPClient. I've transmitted over 800 Kbytes/sec. for days testing this.
The problem you are running into can be seen in how the sample code above is written. The write function returns the number of bytes written, but on the Photon also returns -16 when the underlying send buffer is full. When this happens, all you need to do is try again, such as on the next invocation of loop.
I think the internal send buffer is around 6K, which works out to an optimal write size of around 1024 bytes. If you make the buffer much smaller, the time it takes to come around by loop, a minimum of 1 millisecond, will cause the internal send buffer to run out of data. If you make it significantly larger, say 4096 bytes, the opposite starvation problem occurs. Since the write buffer is so large, the internal send buffer needs to be early empty before writing to it, and you'll run out of data then as well.
In your case, I would break each write up into 1024 byte chunks, repeating when the -16 error occurs, and you should easily be able to sustain that rate.