UIKeyNavigation is driven by UICamera's events, which reacts to Input.GetKeyDown, which occurs only once per frame. UICamera receives the GetKeyDown and then notifies the UIKeyNavigation, which then reacts accordingly by selecting another object. What are you seeing that's different and what version of NGUI are you using?
I just did a quick test to make sure -- added a button, put UIKeyNavigation on it, then duplicated it a few times. Navigation works as expected.