How about creating "global" features like a dictionnary accessible from anywhere instead of a variable (like accessing the previous feature with @Value(feature[-1]._creation_instance)? This would help to limit multiple joins.
Close ideas:
https://community.safe.com/s/idea/0874Q000000TlDuQAK/detail
https://community.safe.com/s/idea/0874Q000000TkqEQAS/detail