This is not possible to achieve in Campaign delivery. When the delivery is being analyzed all personalization blocks must be known.
Using a dynamic setup like yours it will never work with the current product design.
There is a non-efficient way to try this which is not scalable and also can cause unnecessary MTA processing delay. The solution is to use a lot of if,else statements which can cater to each requirement of yours.