Sounds like heuristics was enabled to detect softbreaks but line unwrapping wasn't enabled or configured to catch the broken line breaks. This happens when the book is mostly formatted properly but just a small percentage of lines are broken - e.g. page breaks from an OCR conversion.
The first thing I'd try is make sure line unwrapping is enabled and reduce the line unwrap factor to where those lines on page breaks get 'unwrapped'. You might need it as low as .1 if the book is as I described above.
If there are no softbreaks in the book to be preserved then in order to not have the whitespace or softbreak classes created you can disable scene break detection completely under heuristics.
theducks' suggestion would work if you're dealing with someone else's Calibre conversion - if you're doing the conversion yourself then the culprit is having softbreak detection enabled under heuristics, as heuristics occurs after search and replace.
Also, you should be using \s* in your regex and generally make it more generic:
Code:
([a-z0-9-,])</p>\s*<p class="(whitespace|softbreak)">\s*</p><p[^>]*>
With the above the replacement should be '\1 '.