Никакой тут магии нет. Вы просто эксплуатируете незадокументированное поведение Android API: cистема не сериализует вашу ViewModel при поворотах, а сохраняет во временой переменой. Вся магия начнется когда вы пойдете в настройки, включите Don't keep activities, перейдете на новую Activity, вернетесь назад:
Caused by: java.lang.ClassCastException: com.quinque.aether.reactivemvvm.base.BaseViewModel cannot be cast to com.quinque.aether.reactivemvvm.ViewModel
На самом деле ваше решение ничем не отличается от того чтоб создать статическое поле и туда записывать вашу ViewModel на момент пересоздания Activity. Вся прелесть Parcelable что модель должна выживать даже когда Android убивает вашу Activity.
Зачем вы пробуете наследоваться от JobIntentService если вам не нужен HandlerThread? Наследуйтесь от JobService
Думаю вам стоит посмотреть в сторону Loaders. Насколько мне известно это сейчас стандратное решение для данной проблемы.
На самом деле ваше решение ничем не отличается от того чтоб создать статическое поле и туда записывать вашу ViewModel на момент пересоздания Activity. Вся прелесть Parcelable что модель должна выживать даже когда Android убивает вашу Activity.