There is a way of defining a vector space without an explicit basis(just as a set with an addition and a scalar multiplication). Similarly, there is a way of defining a vector bundle without choosing an explicit coordinates (as an abstract vector space, as defined above, which varies with the point in the space).
Just as a (p,q) tensor is a multilinear object related to a single vector space, a tensor field is a section of a tensor bundle associated to the vector bundle. (A section is just a function on the underlying space whose value at a point lies in the vector space above the point.)
Usually, the vector bundle relevant in physics is the tangent bundle of a 4-manifold.
This abstract way of defining tensors and tensor fields is manifestly invariant under coordinate changes, but it takes some machinery to set up. Whereas the 'numbers associated to each coordinate system which transform in a certain way' is more direct, but the rules can seem arbitrary at first sight. Also, maybe this approach can generalize to allow more transformation rules which might take some time to put into an abstract setting.
Standard example is a matrix A which transforms as PAP^-1 (where P is linear coordinate change) vs a matrix T which is a linear map between vector spaces.
The same issue appears in software where you can expose a data structure as a tuple of numbers/string fields and then define functions on them, or you can expose it as an abstract data type where the user of the library can only apply certain functions on them and the implementation author can choose different representations(coordinate changes) in which to easily compute the functions.