$hget() is not slow, it's fast, it's what makes hash table great.
Depending on what you're doing, using the item name to store two different value (item1.data1) makes sure you're ok with performances, editing each value is a /hadd call with two dynamic values to form the item name, and usually getting these two values is not considered much overhead. Accessing is also a single $hget call with the two values.
If you're using one item to store multiple value separated by tokens (which i find more handy myself), if you need to edit one of the value, you end up with a lot of overhead because you also have to gather the others tokens.
However using tokens allows you to use $*, with tokenize, which is faster than a while.
So, for example, if you don't plan to edit the data too much/too often, and end up reading the data most of the time, tokens + tokenize + $* may be a good idea for best performances.
If you end up having too many item name with the same prefix, you can also put them in their own hash table.