i'd say use a unit array and bind the units via index to the 'pokeballs' through their custom value -- ie, when captured the unit is sent to a temp area, hidden, and set as captured[x] and then the custom value of the ball used is set to x, so when u 'use' the item it checks what its custom value is to load the proper unit
hence u can carry as many as u want (ok, so as many as the guy can carry in his inventory), with as many different units as you want (including damaged units), with 1 item
or use gamecache to bind, but custom value is a simpler concept