Immaginavo che scegliessi di complicarti la vita con uno scheduler, perché come ti ho suggerito è la strada più semplice, tuttavia l'obbiettivo è quello di imparare e non quello di raggiungere il risultato desiderato.
Ho tirato in ballo lo scheduler a livello teorico solo per aiutarti a capire perché il tuo codice non fa quello che vuoi, diversamente ti avrei dato un link ad uno scheduler che ti risolve il problema.
Ora dimmi come vuoi procedere, vuoi risolvere o capire ed imparare?
A me sembra che tu sia disposto ad imparare ma come accade spesso (ed è naturale) nella sperimentazione sono più gli insuccessi che i successi, da ciò deriva un senso di frustrazione.
Lo scheduler che funziona potrebbe essere questo.
Tuttavia io non mi butterei a provare nell'immediato senza prima capire. Potenzialmente questo scheduler funziona perché i task sono eseguiti ciascuno con uno proprio stack e risultano totalmente indipendenti l'uno dall'altro.
Ora in questo contesto accade che due task vogliono condividere una sola risorsa e litigano per impiegarla. Per tirarsene fuori occorre competenza e alle volte non se ne ha abbastanza.
Dimentica per il momento gli scheduler e concentrati più su come si deve usare la lib fastled. In particolare il metodo show() che secondo me andrebbe chiamato una sola volta nel loop principale e non come fai tu in due loop (cicli for) separati.
Ciao.