The straightforward solution is, yes, copy once to a root location on each of the 25 servers using File.Copy(). Then, tell each server to copy the data from that root location to the target 400 locations by pushing them commands. The exact format of the command depends on what type of servers they are.
If they are unix servers, send the command via SSH or SCP.
If they are FTP servers, some servers provide a remote-to-remote copy command that is more efficient than re-uploading the same data.
If they are Windows servers, you can use a .CMD file, or PowerShell or something else (see here for more ideas: https://serverfault.com/questions/116166/windows-how-to-start-a-file-copy-job-on-a-remote-server-without-passing-through)
However, if you actually control the 25 servers yourself, just write a command line program that monitors a "drop folder". Anytime it receives the 10MB file in the drop folder, automatically propagate the file to the 400 target locations.