Again, all of these attempted changes are blind guesses until you know why the query takes the time it does.
You need to collect information about that session when the query is running to see why it takes the time it does (while not perfect, this could be as simple as querying the DMVs or sysprocesses and manually eyeballing wait stats, IO, CPU, etc.). Once you know that, we can start to make some more pointed investigations.
Randomly changing aspects of the query is an incredibly inefficient way of troubleshooting something like this.
Could you at least post the execution plans for the original query from each of the servers?