Joins between linked servers are dangerous, so can we just load the data into a local table before doing the join?
I've used this technique in data synch jobs.  It helps if you don't need the entire table from the remote server (just a few columns or you can filter it down in your WHERE clause).  And, by bringing the data into a temp table on the instance where you're doing the most work, you can index the temp table to your needs and get statistics that are helpful to the work you're doing.  

Of course, if you're trying to do this on a very frequent basis, it might not be the best solution for you.  Maybe SSIS?