Is is it possible to schedule a job in the future, that after completion, will determine the next appropriate time to run and schedule another job?
yes it is possible to run a job with defined delay in future: link and you can enqueue job from job, no problem with that.
maybe you could consider starting recurring job instead and in each iteration check if the job has to do some work or skip this time. This seems to be safer than chaining jobs from jobs - in case you get exception and fail to chain the job, you will interrupt the execution and it will never recover itself.
Thanks for the information. You make a valid point about an exception causing the chain to end, so I will explore using a recurring job instead.