Yes you are correct the Element Exists works even if element is not visible, If you want to check if the element is visible and then you can use Get attribute activity and you can use visibility option or fore ground option
Try these two options and let me know
If you are using foreground option then the output variable type should be boolean
If you are using Visibility option output variable type should be integer type (result will be of type 0 or 1)
In most of the cases Visiblity is not working but relativeVisibility attribute is triggering the display status. Just check it e.g. within UiExplorer (as you also can identify the hidden but existing element there)
if element always exist then I would recommned to check the attributes of that element. Attribute like IsVisible or Foreground etc. Get the value of this attrribute to check the visibility of the element and proceed further.