Maybe i'm doing it wrong but why is entity_translation_handler_filter_translation_exists checks if there is a source available?

It does this:

128       $this->query->add_where($this->options['group'], "$this->table_alias.source", '', '<>');

Which is of course correct since it wouldn't be a "translation" if no source is there but a node which is only in "german" and site default language is "german" get's excluded. My use case is pretty simple: show only nodes for the language of the current user and only if the node is available in that language