That's a good point. And actually, all you need is the referenced block_num and you can infer that it contains at least one related transaction. You would avoid storing the trx_id to save on custom_json op size, which is pretty cramped right now.
I guess the only problem with that is if you write records asynchronously with more than one thread. Even if there's only one thread, if that thread crashes after successfully broadcasting a valid record, but before storing the current state, that valid record will become an orphan in the list.
RE: Segment Marketing vs. General Marketing