Using a script in every sampler is a good approach. You can use a single external script so you don't end up with lots of tiny individual scripts.
You can delay events with delayEvent().
For my strumming system I had everything in a single sampler, each string and up/down was mapped into a different area of the mapping editor. This idea isn't original with me, I've seen it used by a few guitar libaries. I created the strum using a timer to play the strings one after another.
24eef671-6b1f-4b68-bb17-2a4e06797108-image.png