Your feedback is greatly appreciated!
Without a soft fork, this is the only way for light clients to verify that peers aren't lying to them. Clients can request headers (just hashes of the filters and the previous headers, creating a chain) and look for conflicts between peers. If a conflict is found at a certain block, the client can download the block, generate a filter, calculate the header by hashing together the previous header and the generated filter, and banning any peers that don't match. A full node could prune old filters if you wanted and recalculate them as necessary if you just keep the filter header chain info as really old filters are unlikely to be requested by correctly written software but you can't guarantee every client will follow best practices either.
The simulations are based on completely random data within given parameters. For example, it will generate a wallet of a specified size and generate blocks of specified size with specified number of transactions of specified format, all guaranteed to not match the wallet. It then tries to match the wallet and tracks the filter size and the bandwidth used by block downloads which are all due to false positives. The maximum wallet size can be millions or more of addresses and outpoints before the filter isn't worth it.
Filters for empty blocks only take a few bytes and sometimes zero when the coinbase output is a burn that doesn't push any data (example will be in the test vectors that I'll have ready shortly).
The cfheaders messages give you the hash of the final block for which there's a header in the message. This means you can ignore the message as necessary rather than ban the peer, or track cfheaders for multiple forks if desired.
We hadn't (or I hadn't) until we read your recent post/paper and are considering it now.
This is also something we (or at least I) hadn't considered before your recent post. We have been working on this for a few months now so didn't have time to work on trying out and possibly incorporating the idea before release.