Regarding <div> in place of <p> (or <h*> tags) I must say that many times I had to do that because of bugs in Thorium an PocketBook. PB has issues with especial margins and paddings (it doesn't honor them) so when I want a <p> with margins (or paddings) different from what I declared in the stylesheet for "p", I must replace the tag for a <div>
The same happens with Thorium regarding <h*> tags. The program doesn't honor the font-size set in the stylesheet. It's awful but if I want compatibility with Thorium , I have to replace for example <h1> with <div class="header1"> to get a proper font-size.