Print may have some potential, but it's not clear to me how the
LocalBusiness/openingHours is supposed to work with anything but
regular hours...

Here's how openingHours are described at

The opening hours for a business. Opening hours can be specified as a
weekly time range, starting with days, then times per day. Multiple
days can be listed with commas ',' separating each day. Day or time
ranges are specified using a hyphen '-'.
- Days are specified using the following two-letter combinations: Mo,
Tu, We, Th, Fr, Sa, Su.
- Times are specified using 24:00 time. For example, 3pm is specified as 15:00.
Here is an example: <time itemprop="openingHours" datetime="Tu,Th
16:00-20:00">Tuesdays and Thursdays 4-8pm</time>

So how would one indicate different hours on different days?  Is there
more documentation that I'm missing?

If I wanted to create a service to take this data an calculate whether
the business is open right now, I'm still stuck having to parse and
interpret a text string, which defeats the purpose of having this
information encoded as "data".