I've always avoided row spans. They get tricky, you've put a span in one column, how does that affect the other columns? Do you need dummy cells? Couple that with html generally being a pain in the arse when it comes to fixed heights - my head hurts already.
I'm thinking you'll need a script solution, unless there is something in a framework, maybe bootstrap has something?
@THEUNDERDOG, if you can get it working with a CSS grid that would be great, but don't think it's possible. An appointment could be 45 minutes, or an hour and a half, so "rowspan" caters for this in tables in theory (and now in practice, see below).
I did get it working with HTML tables, setting a minimum height for the TR (height for TR acts the same as min-height), and rowspans.
No dummy cells, works just as required from all my testing so far.