So after some testing, it seems CharacterAddTreasureTable() is for the loot treasure, not the traded treasure. CharacterSetCustomTradeTreasure() also seems to override the initial trade treasure, rather than add to it.
Side note, InventoryLaunchIterator() doesn't seem to trigger the completion event. I've checked StoryEvent and ObjectFlagSet.