What you are facing I get typically when the schema call is in a utility apex class constructing a SOQL string and the final database.query() resides in a different class, such as a controller or trigger. Now if both apex files got different API Versions, the Schema call returns potentially obsolete fields which might not exists in the other class.
I make heavy use of schema since I write almost ALL queries with the help of utility functions to allow SELECT * FROM ... because I hate long and hard to maintain lists of field names as we should write it in vanilla apex.
If this might be true in your case, just keep all your apex classes at the same API version and you will be fine. If you can't match the versions, you could selectively exclude those fields. I did that with an self made query syntax looking like this SELECT *.not(fieldname1|fieldname2|....)
More details and an older version of my utility class you can find here
Howto wildcard SELECT * to query all fields of objects in APEX?