<span>s are an inline element. Whatever you're using to view seems to ignore the CSS display setting and only apply the <br>s.
I think you're getting extra linespacing with your combo <p><br> because unless you explicitly set to override, <p>s are usually rendered with a default line-break and linespace anyway.
I would advise the use of <div> for your stanza lines. It comes with a built-in linebreak but no linespace and should give you the display result you want in a reasonably semantic way without having to tweak the CSS too much or add extra markup that might be superfluous.