Conveyor submitter daemons are doing nothing if there are many requests with no sources. (Can reproduce)
For quite some time now in the ESCAPE Rucio instance there are no jobs submitted to fts unless I significantly raise the number of conveyor submitter threads every now and then.

After some digging up I found out that the conveyor submitter daemons are fed with jobs that have no sources. Then they go through them and of course do not submit them. 

The issue is that they do not mark them as unavailable or something and they stay in the requests queue. On the next loop they are picked up again and this continues as an endless cycle of doing nothing.

They continue of the loop happens here https://github.com/rucio/rucio/blob/3c840247c1c3decd37ade5b5d9b0c5adb4e0a960/lib/rucio/core/transfer.py#L656

### How to replicate
Instructions
1. Create 1001 files stuck in replicating state (by a failed upload)
2. Create replication rules for those 1001 files.
3. Do a successful upload
4. Add a replication rule for the file
5. Run the conveyor submitter as many times as you want, the valid transfer will never be picked up.

CLI Instructions
```bash
$ git clone git@github.com:rucio/rucio.git
$ cd rucio
$ docker-compose --file etc/docker/dev/docker-compose-storage-localhost.yml up -d
$ docker exec -it dev_rucio_1 /bin/bash
$ ./tools/run_tests_docker.sh -i
$ ./tools/docker_activate_rses.sh
$ rucio-admin rse add FAIL
$ rucio-admin rse add-protocol --hostname fail.com --scheme root --prefix /fail FAIL
$ seq 1010 | xargs -n 1 -I {} -P 10 touch failed_upload{}
$ seq 1010 | xargs -n 1 -I {} -P 10 rucio upload --scope test --rse FAIL failed_upload{}
$ seq 1010 | xargs -n 1 -I {} -P 10 rucio add-rule test:failed_upload{} 1 XRD1
$ rucio-conveyor-submitter --run-once
# Nothing should have happened here since the uploads to MOCK fail by default
$ touch working_upload
$ rucio upload working_upload --scope test --rse XRD1
# This upload will succeed
$ rucio add-rule test:working_upload 1 XRD2
$ rucio-conveyor-submitter --run-once
# Request about test:working_upload will not be picked even though it is valid
```


diff --git a/lib/rucio/core/transfer.py b/lib/rucio/core/transfer.py
index 8629640ce..e95e51a48 100644
--- a/lib/rucio/core/transfer.py
+++ b/lib/rucio/core/transfer.py
@@ -662,6 +662,10 @@ def get_transfer_requests_and_source_replicas(total_workers=0, worker_number=0,
 
         multihop = False
 
+        # Add req to req_no_source list (Will be removed later if needed)
+        if req_id not in reqs_no_source:
+            reqs_no_source.append(req_id)
+
         # source_rse_id will be None if no source replicas
         # rse will be None if rse is staging area
         if source_rse_id is None or rse is None:
['lib/rucio/core/transfer.py']