If this is a router problem, this might be a side effect of the inbuilt port translation stuff some routers use.
During a normal dcc send ->>> []DCC SEND filename LongIP Port Filesize[] the router well intercept this on its way out, and alter the port number to within a range it has deemed free, most times up in the 10s of thousands, maybe 50,034 for example. The router well record the new port number & orginal portnumber & the lan ip of the pc sending it. Then when the reciver of the file makes a connection using this port number (50,034) the router looks up in its table for that port, and knows what lan IP to forward the connection to and on what original port number to use.
This is also the cause of some people not being able to resume files, they recieve a message "resume rejected invalid parameters" (or something like that), The cause of that is the resume message comes back in as []DCC RESUME "file" Port resumespot[] and it doesnt get the port number changed, so mirc looks up and says WTH? theres no send on port 50,034!
This processing of dcc sends port translation is normally monitored for with traffic going out port 6667 (irc server port). Which would account for why it may not have happened using other ports.
The results of actually typing DCC SEND "xxxxxxxx" on its own in channel may have caused the router to become confused in some way.
I know some netgears have this feature, most dlinks do for sure. Linksys (what i have) dont employ it, thus why i couldnt reproduce it.