or(
thresh(3, pk1, pk2, pk3),
and(thresh(2, pk1, pk2, pk3), older(100),
and(thresh(1, pk1, pk2, pk3), older(1000),
)
Such constructs are possible with taproot trees (manually constructed), but I am afraid that in WIP compiler for taproot they can also get prohibited.