optimized most time consuming tasks during bulk operations

After profiling some bulk delete operations, I identified the most time consuming operations and:
- optimized the count operations by using a fetchLimit
- created some asynchronous count operation to not block the main thread with performBlockAndWait