update caches properly when we expire a bad transaction

A bad transaction can be rejected by peers during consensus
even though it was accepted locally.