Personally I only use records for large-ish "configuration" datatypes which and I just don't use that many of those for it to be a real problem.
Frankly, I have run into only one circumstance where I wanted to throw my computer through a wall due to record inefficiencies... and it only came up while trying to hand translate an the XML specification for ClinicalTrials.gov. It turns out there was a much simpler way to tackle the problem anyway.
Having said that, a lot of projects seem to have a general Types.hs where they declare all the types they share between modules. This is a great solution for that.
Between all of these, it's much less painful than you might expect, though there certainly remains some pain.
(emphasis added.) I'm still a Haskell beginner, so I'm not the best person to comment on how this works out in practice.