In this scenario, the best option would be to have a single readStream reading a source delta table. Since checkpoint logs are controlled when writing to delta tables you would be able to maintain separate logs for each of your writeStreams.
I would recommend storing your checkpoint file in a `_checkpoint` sub-directory in your delta table directory. The "_" will allow spark to ignore it when reading the table and you are able to maintain those checkpoints with the appropriate tables.