The approach that I was taking was the latter, but as I was doing that, I kept in mind that usage would probably prefer the former. I don't think it's unreasonable that payment_address can parse all of the different types, but the derived approach allowed me to test things out separately, so I figured it was a fair place to start.