Speed up data transfer from db to application
During work hours, take a look at sys.dm_exec_requests and see what the wait_type column says.  This will tell you what the requests are waiting for.

Right before working hours, you could run DBCC SQLPERF ('sys.dm_os_wait_stats', CLEAR); and then look at sys.dm_os_wait_stats to see the accumulated stats during the day.

Do you have indexes defined on any of these tables?  If not, then table scans might be clogging your I/O system, and locks might be causing some blocking.

If people are running SQL Profiler traces during work hours, those could be slowing down the entire system.  You could detect those by quering sys.traces.

Running a careful profiler trace yourself might reveal some interesting facts about this query.  Try capturing a Showplan XML Statistics Profile event when it runs.  Maybe the query processor is choosing a very bad query plan.  Maybe the plan is generating intermediate tables that have a ridiculous number of records, or maybe there is a bad nested loop that would work better with an index or with a merge join.

Since this is an external server, another possibility is that you are simply overwhelming network bandwidth during working hours.

You mentioned in a comment that there was a lot of data coming back.  Adding some filters in the query might help-- if that is an acceptable solution for your application.