Try putting $modx->reloadContext('web') above that. That will refresh the document map.
I have had getChildIds() fail, but I think it was because I didn't specify the context. It's quite a bit faster and more memory-efficient than getMany('Children') since the latter will retrieve all the child objects, which you usually don't need or want.
Oops, I forgot the question of how long reloadContect() takes.
I think getChildIds will still be faster, but I'm not sure. It will certainly save memory.
You'd probably have to do some profiling to know which is best. You might be able to see the times in Chrome Dev. tools.
I don't know enough about the process to say. It's possible that reloadContext() is going to be called somewhere down the line and calling it yourself will allow that call to be skipped. I just don't know. In any case, I suspect that using reloadContext() is highly optimized.
TBH, I usually don't worry too much about time for a manager event that doesn't affect page loads and that the user is expecting to take a few seconds.