ES used heap % grows slowly until system becomes unresponsive

A lot of that isn't just about heap, it's about sanity and understanding the impacts that these changes can have on your system, it's stability and usability.

I'd suggest you upgrade to 1.7.1 as you will get better performance out of that. What java version are you on? If it's not 1.8u40 or above then do that as well, as we have seen good gains from that release onwards.
Also reduce your heap to 30.5GB, not 31GB, that's a figure that's come from Oracle themselves. You can comfortably increase your heap on the client node to ~75% of total system RAM as you don't need to worry about caching on the FS level, but that won't help the heap problems on your data nodes.

How much data do you have across your indices? What's the average size of an index?

Ultimately if you can't add more resources (ie heap/nodes) then you are limited by what you can do.