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:
/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.
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
/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.