Pieter: I kind of see your point (but I think you're missing some key points). You mean just download all the headers and then just verify the transactions you filter out by using their corresponding merkle trees, right? But still, I don't think that would scale as well as with the tree structure I propose. Because, firstly, you don't really need the headers of the sibling chains. You just need the headers of the parent chains since the parent verifies all the siblings. All you really need in a typical (non-mining) situation is the headers or full blocks in one path going down the tree starting from the root chain. So that means O(log n) needs to be stored (headers or blocks) (n the number of transaction on the network). With big blocks, you still need O(n) headers. I know headers are small, but still they take up space and verification time. Also, since you are storing the full blocks on the chains you want, you are validating the headers of those blocks and you are sure that you are seeing all transactions on those blocks. And if certain addresses must stay on those blocks, you will know that you are catching all of the transactions corresponding to those blocks. If you just filter out based on addresses or other criteria, you can be denied some of those transactions by full nodes, and you may not know about it. Say for example, your government representative publishes on of his public addresses that is used for paying for expenses. Then with my system, you can be sure to catch every transaction being spent from that address (or UTXO or whatever you want to call it). If you just filter on any transaction that includes that address, you may not catch all of those transactions. Same with incoming funds.
There are also advantages for mining decentralization as I have explained in my previous posts. So still not sure you are right here...
Thanks