I might be wrong on this, but judging from the time it takes to copy files from a dired buffer displaying files on a server connected to through ssh to another dired buffer on the same server, it looks like Tramp is not acting locally on the server, but passing the data to my machine, and then back up to server again.
If this is the case, it doesn't seem very optimal, and I'd suggest to execute the cp command locally on the server, when dired is used in this manner.
Cheers,
Diego