The way you stated the question is a little confusing. Let me restate it more explicitly.
On a given network...
- One file transfer it transmits about 5Mbps max. Nothing we try do gets more throughput.
- Two file transfers, run concurrently, transmit about 10Mbps max (5M + 5M).
There are no box in the middle doing "traffic shaping"... the limit is based on the type of network we have.
Why can two transmit more than one?
The answer is that TCP/IP is a polite protocol. It actively tries not to hog a channel. It is actually optimized such that many transfers at once all get a "fair share" of bandwidth.
The down side of that is that a single transfer on an otherwise empty network gets pretty bad performance. This isn't because the creators of TCP/IP want it that way. Years of research just haven't improved that situation very much because the primary research is making the internet as a whole more efficient, not making a particular pair of machines on a closed network do well. The internet isn't about you, it is about "us".
It is difficult to tune a network for your particular situation. For example, when your machine is waiting for the hard disk, the network can go idle, unused. With two transfers at the same time, while one transfer is waiting for the hard disk, another transfer is "keeping the pipe full".
If you want to improve transfer rate break your transfers into multiple simultaneous transfers. Do benchmarks to see if 1, 2, 3, or 4 get the best wall-clock time. Use what works best. (and if you ever change your network, NIC speed, etc. etc. you should re-do the benchmarks)
If you can't break the task into multiple transfers, you'll need to look into tuning the TCP/IP settings on your operating system. There are some parameters you can change, such as how fast it should ramp up bandwidth use ("fast start timer") and other settings. These are different for different operating systems. Searching the web finds articles like http://support.microsoft.com/kb/93444 and http://www.psc.edu/networking/projects/tcptune/ However I should warn you that you can make things worse just as easily than you can make things better. You should establish a benchmark and tune one parameter at a time running the entire benchmark after each change. Keep good logs and see what makes things better and worse. And also, remember that once you have tuned things for this kind of transfer, doing other networking tasks (like surfing web pages) might be out of tune.