Is it possible to use a replacement kernel without hacking core? I'd like to use a replacement DrupalKernel. 

It looks like the default is hardcoded into index.php, despite the existence of DrupalKernelInterface:

$kernel = DrupalKernel::createFromRequest($request, $autoloader, 'prod');


I suspect the answer has to be no, but I thought I'd ask anyway: is it possible to use a custom kernel class without hacking index.php?
Well, let's take a look at the classes implementing DrupalKernelInterface. Beyond DrupalKernel, you will find


TestKernel
InstallerKernel
TestRunnnerKernel


Especially the second and the third are very interesting and gives you an idea what these can be used for: if you have a very unusual request flow which should be much more rare than in Drupal 7 then you can write a special Kernel to help. Your entry point will not be index.php but that's fine.