+1 to this as a workaround until the kernel finally addresses the issue. Earlyoom is a user space OOM-killer that kicks in before the system starts the mad paging dance.
It seems likely that something can be done to make the behavior less perverse but I'm not convinced that the behavior CAN be better than something like earlyoom.
What makes earlyoom useful is the fact that you can tell the machine what is low value and likely to be problematic. I'm not sure that information can be determined automatically. I'm further not sure what a better strategy than start killing low value problematic processes when we reach a threshold looks like.