You can add multiple values for the situation that you're describing by using a combination of /hadd, $hget, and $addtok

The format you're looking for would look like:
Code:
/hadd -m Table $nick $addtok($hget(Table,$nick),$address,32)


If you don't understand that, here's a simplified, but multiple line version of the same thing.

Code:
var %addresses = $hget(Table,$nick)
var %addresses = $addtok(%addresses,$address,32)
/hadd -m Table $nick %addresses

See /help /hadd
/help $hget
and /help $addtok

This is the easiest way of doing what you're asking, but there are other options.

As to why the IP address was over-written, since you're familiar with INI files I'll use an INI file comparison.

You use
Code:
/writeini -n file.ini section item data
to write information to the ini file.
Now, if you specify the same section and item, but different data, the data that was in the ini file gets over-written

Hash tables can directly load sections from an ini file using the -i switch. This makes each item from the ini file the item in the hash table, and the same with the data, but the information regarding what section is not retained in the hash table.