It's not that simple, coz validateAttachment() will return true for 2 different unconfirmed transactions that cancel the same order. After one of them is confirmed another transaction will never be confirmed. This makes it very cheap to DoS nodes - just send 1000000 transactions that cancel the same order. If we included all such transactions into blocks then DoSing would be very expensive.
Is there another way to counteract the DoS attack?
The second invalid transaction will be removed when its deadline expires. I don't like including invalid transactions in the blockchain just for the purpose of preventing a theoretical attack. By that logic we shouldn't bother validating transactions at all. And once we allow invalid transactions in the blockchain, we can't change our mind in the future easily. And a DoS attack can be conducted just by making a sufficiently large number of http requests of the types that are expensive to process anyway, whether they create transactions or not, so we need a better way of dealing with those.