pull down to refresh

Without looking into the code, i have a proposal for filtering the block propagation itself, without that causing chain split. The idea is as follows: if an undesirable block is received, it is saved in memory. The node then behaves as if this block has never been received, unless a successor block (or more than one, depending on user preference) is received on top. That will give advantage to non-filtered blocks without actually causing a (long lasting) chain split.
Has something similar been proposed before?