You could use the good old GetBluePrintChain(BluePrintChainFilter filter)GetBluePrintChain(BluePrintChainFilter filter)
for this maybe? This gives you all child pages based on the current page you're processing.
As a quick example:
BluePrintChainFilter b = new BluePrintChainFilter(engine.GetSession());
b.Direction = BluePrintChainDirection.Down;
foreach(RepositoryLocalObject r in page.GetBluePrintChain(b))
{
log.Debug(r.WebDavUrl);
}