Calculating the nth prime number for huge BigIntegers
Small nit:

if (candidate.compareTo(TWO) == -1)
    return false;


This is implementation dependence on BigInteger - better to use generic way:

if (candidate.compareTo(TWO) &lt; 0) {
    return false;
}


Also - this is in general more readable and less error-prone to wrap the if statements in {}-brackets even for 1-liners.

Some tricks to possibly improve performance:


Precalculate Erathosphenes sieve till some number you can handle sieve completely in memory (don't use BigInteger for storing those) and check up to sqrt but iterating through primes only and when you exhausted sieve - switch back to your method.
Did you try BigInteger#isProbablePrime here? This will tell you much faster if current number is composite - so you will do less checks.