How does Drush figure out modules that have updates? How does Drush get information about installed and disabled modules and  updates for them?

I'm facing issues since drush is trying to update modules that AREN'T in the modules directory nor in the system table anymore.

I had to remove them since they were causing problems.
But in the end I got nothing but more problems.

How could I get drush to understand these do not exist anymore and do not need to be a)checked and b)especially not updated.

I've tried drush rr to "make it clear" but it keeps trying these causing errors that crash all other updates etc.

Update:

These the modules.
Simplenews [simplenews-7.x-1.1], 
Simplenews Bounced Mail Handler [Simplenews_BMH-7.x-2.x-dev], 
Simplenews Statistics [simplenews_statistics-7.x-1.0-alpha1]

I can confirm that I can remove the simplenews rows from system table but they come back as soon as I run:              drush rr OR drush pm-list --pipe --type=module --status=disabled--no-core
Use pm-uninstall to completely remove a module from your system.

If you have already deleted the code for the modules in question, the safest and best thing to do is put the code back and run pm-uninstall.  If you just want to get rid of the reference to the module in the system table, you could take matters into your own hands, and just do this:

drush sqlq "delete from system where name in ('moduleone', 'moduletwo');"

If you do that, though, then the module won't have a chance to remove any other unneeded assets that would be deleted if you used pm-uninstall.