Also, do you have an multi-column index on (kind, pubkey) as a pair? It may sound superfluous but it is faster than having two separate indexes (which you still need however). Because under the hood the data is laid out in such an index like this:
kind1,author1 -> offsets of events
kind1,author2 -> offsets of events
kind1,author3 -> offsets of events
kind2, author1 -> offsets of events
...
and it can jump to the matching kind and author in one fell swoop without doing a hashjoin (for example).