How are mutated transactions prevented from getting relayed? Quoth Bitcoin release-notes-0.9.0.md:


  This release contains a few fixes for transaction ID (TXID)
  malleability issues:
  
  
  -nospendzeroconfchange command-line option, to avoid spending zero-confirmation change
  IsStandard() transaction rules tightened to prevent relaying and mining of mutated transactions
  Additional information in listtransactions/gettransaction output to report wallet transactions that conflict with each other because they
  spend the same outputs.
  Bug fixes to the getbalance/listaccounts RPC commands, which would report incorrect balances for double-spent (or mutated) transactions.
  New option: -zapwallettxes to rebuild the wallet's transaction information
  


What does "transaction rules tightened" mean and how does it prevent relaying and mining of mutated transactions?
Since mutated transactions are also valid transactions, how can the client tell original transactions apart from mutated ones?

Are powerful adversaries still able to abuse this feature after the update?
Transaction malleability is prevented by selecting one canonical representation of every transaction and making every other representation nonstandard. That is, of all possible transactions one transaction can be mutated into, exactly one is considered "original", and other representations are not relayed.

Originally, Bitcoin could accept different representations of the same data. For example, it were possible to represent the same number both with and without leading zeros, producing equivalent transactions with different binary representations. Now, a transaction would only be considered standard if those numbers are represented using a specific number of digits, so it is now impossible to write the same number in different ways.

However, this rule is not enforced on transactions that are already in a block (since otherwise it would be a fork), so a powerful adversary can still push a mutated transaction into the network by mining it himself.