After your previous message I deleted all the Freesat services and all the bouquets and started another scan. It picked up the Freesat bouquets quite quickly this time.
I didn't realise I had to explicitly set the EPG grabber for each mux; I'm sure I haven't done that before, and I've definitely never disabled it for all the other muxes. Thankfully it does actually let you change the setting for all selected muxes at once, otherwise that would be quite a chore. It should be possible to scan either for events or for services/bouquets on any Freesat mux, not just 11425H, because they all carry the full set of data [1], but 11425H transfers the EIT at a much faster rate and has a different set of non-standard PIDs from the others.
Anyway, I set the EPG modules as you suggested, and forced another network scan, but it hasn't made a difference so far. Should I delete the services and scan again, and/or force an EPG grab and/or wait for tvheadend to schedule one? The bouquets and LCNs should be read during a services scan, and an EPG grab should just read events from the EIT. This apparent overlap just makes it confusing.
[1] I think it used to be the case that each mux carried data for all Freesat muxes except itself, so you had to scan at least 2, but lately I've found they carry their own data too.
Edit: The LCNs have turned up after all! At first they were only in the EPG, then they also showed up in the Channels list after remapping, but the LCN column in the Services list still contains nothing except 0 for all the Freesat channels.
And thanks for your help, which proved crucial.