Well, with some more debugging I got the ATSC scanning finally working. I didn't realize that the ATSC decided to register it's own private PMT section_type for AC-3 audio, so that's why my entries weren't getting into the list of available channels (one of those thing I discovered when looking at the raw dump and asked WTF is section_type 0x81???).
(click on the image to enlarge)
I've still got some cleanup to do, but now that it's working it should be easier to take a second pass over the code and see what was really needed to make it work.... I need to refactor it so that there is minimal interference with the existing DVB support while still sharing code where appropriate (such as the PAT/PMT parsing)