If you want multiple barrels to explode at the same time, you can use exactly the same method as you do for the single barrel but when calling the script_models, use 'getentarray'.
They will all explode at the same time, so in essence what you are doing is making multiple barrels behave the same as a single barrel. the downside is it may look a little odd. What i would do to give it a little more realism is have a trigger, then use this trigger to explode the other barrel via a script, so you only have one trigger in the map but multiple barrels.
This would work by doing something like;
// get the trigger
trig = getent("trigger", "targetname");
// wait for it to trigger
trig waittill ("trigger",other);
// call your explode funtion
Now you can either call other functions tied to specific barrels here, or at the end of the explode function
This way each barrel would explode at a different time, you could however just use a wait command, something like
// wait 2 second before blowing barrel 2
// wait 5 second before blowing barrel 3
and so on...
Personally that's how i would do it, although there are different methods you may like, use which ever you prefer.
Remember each function will be for a unique barrel, so let say you have a function called 'barrel1'
// the barrel
barrel1 = getent("barrel1", "targetname");
// the destroyed barrel
barrel1_d = getent("barrel1_d", "targetname");
// do the fx stuff (sounds, explosions...)
// hide the intact barrel
//show the destroyed barrel
Remember in your main function ( the one that handle the trigger) you will need to hide all destroyed barrels so you will also need to call there entity targetnames (using getent)