@Dan Cook There are many possible usage of the term abstraction that it is probably best to specify what one means before making a point. I accept all the following definitions for example:
1. Abstraction as naming (what you call indirection). This is a tool to manage complexity. This is how Sussman and Abelson uses the term in SICP. This is an abstraction because it hides the implementation details.
2. Abstraction as "abstract" (or not realized). This is the definition used for ADTs and abstract classes for example.
3. Abstraction as uniform interface. Some people are uncomfortable using abstraction for everything in (1) and (2) and prefer to reserve usage of the term for "good abstractions". Abstractions obtained by applying the process of abstraction and that are generic enough to be useful in multiple places.
4. Abstraction as model. This is your definition I believe. It is about removing the details of reality you don't care about.