Why not simply put the bots in a multidimensional array? You could then just process all bot movement etc in a simple loop in a separate
thread. 4k items isn't a huge amount to deal with. Obviously if you're passing data back and forth between 4k real players on different computers then that's another matter!
You could further improve speed by marking what part of the map the bots are in. If they're not close to the player then you could just ignore them or only process them when not much is happening. If the bots are traveling together in a vehicle then you'd want to mark this so you only process the vehicle and not all the bots within it.
Out of interest what's the game you're building? Do you have a demo? Is it just you coding it?
Personally I'd avoid GPU processing (or any wild new technology) because adding a complicated new technology just pushes your end date way into the future. If you're a team working on the program and someone is willing to learn then perhaps that's OK but what happens if they leave?
Mike