A more efficient mongodb query; $or was executing multiple queries in

parallel. I've also added delay_until to the hash that gets inserted,
to further tidy the search query.
one tiny comment :)

```
[
    ref($self->{pending_status}) eq 'ARRAY' ? @{$self->{pending_status}} : $self->{pending_status}, $self->{processing_status},
]
```
means a new array ref will be constructed every time get_options is called, and `$self->{pending_status}` will be dereferenced to put the values back in the other array ref

since we're now always bringing in an additional status (pending_status and processing_status), it'd be better if we create the array ref up-front and reuse it - maybe by combining pending_status and processing_status parameters when the object is instantiated (we might then also need new methods to set pending_status/processing_status at runtime to build the new array ref)