Update:
Turns out the netlist file generated with PCB/Tools/Netlist/Export is the old Protel netlist format which is the exact format my custom program requires, so my missing test point program works with no modification!
It would be more convenient if this same file could be generated directly from the SCH side, but I can live with it.
I did consider looking at the EDIF and the ODB++ netlist formats and modifying my program to fit, but no need now. I just have to make sure the PcbDoc has been updated to include all components prior to exporting the netlist.
The more I use Circuit Studio, the less I miss Altium.