My rough input is, I'd just do something like this, from the bottom (lowest level) up:
(key 1 = Khat's priority key 1, etc.)
Code:
Priority Key
|---> Step 1 (reset to step 1 after X seconds; adjust to your taste)
|---> key 1
|---> Step 2
|---> key 2
|---> Step 3
|---> key 3
|---> Step 4
|---> key 4
Strike key (reset to step 1 after 5 seconds)
|---> Step 1 (do not progress to step 2 for at least 2 seconds)
|---> strike 1
|---> Step 2 (do not progress to step 3 for at least 1 seconds)
|---> strike 2
|---> Step 3 (do not progress to step 1 for at least 1 seconds)
|---> strike 3
DPS key (pressed OR released)
|---> Step 1 ("reset to step 1 after 2 seconds" just so your normal first "hit" on any new encounter will be the priority ability(ies).)
|---> Priority key
|---> Step 2
|---> Strike key
Considering the vagaries of ability timings, that will give you a close approximation of "random" without getting all insane with complexity, meaning it's manageable. ;) And it "weights" the strikes toward Festering Strike. You can adjust the progress delays to tune it so it works better with your spam rate and results.
My 2 copper after a quick think, anyway.