This happened because of typo in seq_dupli() when duplicating effect data.
Instead of duplicating data to new sequence, it was duplicated into original.
Even though this is quite messy situation, I can't really imagine how I could so reliably (100%) reproduce corruption. Because even though seq->effectdata of original sequence was constantly changed they should be rarely freed.
I must be still missing something here, and I want to be sure this is resolved completely.