You can't get this from the transaction because which accounts a transaction
affects depends on things like which offers it winds up taking. And you
can't build it with the metadata because you don't always build the metadata
locally -- consider fetching a ledger after a network split. The only
rational way to do this is to build the affected account vector from the
metadata.