With enough IPs listed as addnodes, the default delay of 2m will cause them to cycle endlessly, never picking up other outgoing peers. With the default timeout of 5000ms, it only takes 24 addnodes timing out to keep a cycle going. I observed this with ~400 addnodes, 1000ms timeout & manually changed source to a 15m cycle time. I think it'd be nice to have the delay as a variable that could be set in the bitcoin.conf file. With a few # of addnodes, one may even want to decrease the delay time.
Another option would be to increase the cycle time for each specific addnode by x amount per connection failure..