Also, it looks like you parse the whole blockchain at start... or am I missing something?
counterpartyd does not handle blockchain reorganizations yet. Thanks for bringing that up. Currently, it builds a persistent-across-sessions database of all Counterparty transactions, which are easily and simply identified, and then, on every start-up, counterparty actually does the parsing of those transactions, from the beginning (deleting and recreating those tables in the DB). This situation is temporary---it made development easier, because the parsing rules were always changing, and the identification of transactions never was. At the moment, the only way to handle a reorg. is to delete the database manually.