1) Depending on your read load, even if you use LOCAL_ONE or LOCAL_QUORUM, you may cause some load on the nodes in the other datacenter from read repair. Try watching the output of nodetool tpstats and see if the nodes are doing lots of read repair. If so, try turning off read_repair_chance for your CFs by setting it to zero.
To observe the above behavior, enable DEBUG logging and look for lines like this:
ReadCallback.java (line 79) Blockfor is ....
It should tell you if the request is blocked by sending requests to nodes in other DC or not, possibly due to read_repair.
2) Dynamic snitch has a reset interval. It means that regardless of past history, it resets the scores it captured for latency of each node. You might observe queries routing to slow node after the snitch reset.