A solution that I’m using, though not very elegant, is to create separate shortcodes for for the opening and closing tags. So if you want to enclose your content thusly…
<div class='my-pretty-div'>My Content</div>
…you would create shortcodes like so…
[prettyOpen]My Content[prettyClose]
Seems to be working without inserting extraneous <p>
tags. An added advantage is that you can then nest another shortcode in between those two if necessary.