Hash tables are very easy to use and work with once you learn them. They are quick to set up and very easy to access. I don't see how an array is really any easier. If you find hash tables difficult, then you may want to work with them a bit and learn how they are used. Then, you'll see that they are really very easy to use.
As for $gettok conflicting based on the deliminator, if you the data being used may contain certain characters, then you just use a weird character as the deliminator, such as Þ as that's rarely used in anything else. If you know for sure that it will never have a comma, then you can just stick to that. But when you're unsure, then you just set the script up to use a weird character that is unlikely to ever be used. Or, when you add text to your list that you'll use $gettok on, you can $replace the deliminator with something weird and then $replace it back later.
For example, when I need to deal with spaces, I may do something like:
alias test {
var %test = $replace($$?="Enter data",$chr(32),_)
var %test = %test $replace($$?="Enter more data",$chr(32),_)
echo -a $replace($gettok(%test,1,32),_,$chr(32))
}
That's a weird example, but it shows how you can store your data using $replace and output it using $replace if that's necessary. Still, just changing the deliminator helps.