By fiddling about today I just found that changing /sys/block/sda/queue/nr_requests from 128 to something above the queue depth of the 3ware controller (256 doesn't work, 384 and up do) also fixes the problem.
Seq. Write 53772 Rand. Write 15557 Seq. Read 47730 Rand. Seek 146.5
Seq. Write 53843 Rand. Write 17595 Seq. Read 44663 Rand. Seek 143.1
Seq. Write 54973 Rand. Write 18897 Seq. Read 41476 Rand. Seek 227.3 (!)