Good news. I got that idea to work over the weekend.
The issue with the first event/callback being missed in my test script turned out to be that there needs to be a little delay between the registration of the event and starting the Task.
This is I guess a bit of a DAQmx bug (or something that should be documented), but is easily worked around.