text: Title: unable to use load_only together with contains_eager and aliased polymorphic entities
  Body: ### Describe the bug
  
  I am having issues loading select columns when using relying on `contains_eager` / `joinedload` when using aliased Polymorphic classes .
  
  In the example below I am attempting to only load the `id` column from the `user` relationship but it appears that it will always load the `do_not_load` column from the parent class `Resource`.  
  
  When not using aliases the query works as expected. 
  
  
  
  ### Optional link from https://docs.sqlalchemy.org which documents the behavior that is expected
  
  _No response_
  
  ### SQLAlchemy Version in Use
  
  1.4.49, 2.0.19
  
  ### DBAPI (i.e. the database driver)
  
  pysqlite, mysqlclient
  
  ### Database Vendor and Major Version
  
  SQLite, MariaDB
  
  ### Python Version
  
  3.11
  
  ### Operating system
  
  Linux
  
  ### To Reproduce
  
  ```python
  import warnings
  import sqlalchemy
  import sqlalchemy.orm
  
  Base = sqlalchemy.orm.declarative_base()
  
  
  class Resource(Base):
      __tablename__ = 'resource'
  
      id = sqlalchemy.Column(
          sqlalchemy.Integer, primary_key=True
      )
      _type = sqlalchemy.Column(
          sqlalchemy.String(50)
      )
  
      do_not_load = sqlalchemy.Column(
          sqlalchemy.Integer
      )
      __mapper_args__ = {
          'polymorphic_on': '_type',
          'polymorphic_identity': 'resource'
      }
  
  
  class User(Resource):
      __tablename__ = 'user'
  
      id = sqlalchemy.Column(
          sqlalchemy.Integer, sqlalchemy.ForeignKey(Resource.id), primary_key=True
      )
  
      __mapper_args__ = {
          'polymorphic_identity': 'user'
      }
  
  
  class Manager(Base):
      __tablename__ = 'manager'
  
      id = sqlalchemy.Column(
          sqlalchemy.Integer, primary_key=True
      )
  
      parent_id = sqlalchemy.Column(
          sqlalchemy.Integer, sqlalchemy.ForeignKey(User.id)
      )
  
      user = sqlalchemy.orm.relationship(
          User
      )
  
  
  engine = sqlalchemy.create_engine(
      'sqlite:///:memory:', echo=True
  )
  
  
  Base.metadata.create_all(engine)
  
  Session = sqlalchemy.orm.sessionmaker(
      bind=engine
  )
  
  session = Session()
  
  user_alias = sqlalchemy.orm.aliased(User, flat=True)
  manager_alias = sqlalchemy.orm.aliased(Manager, flat=True)
  
  
  q1 = session.query(
      Manager
  ).join(
      User, Manager.user.of_type(user_alias)
  ).options(
      sqlalchemy.orm.contains_eager(
          Manager.user.of_type(User)
      ).load_only(
          User.id,
      )
  )
  
  
  q2 = session.query(
      manager_alias
  ).outerjoin(
      user_alias, manager_alias.user.of_type(user_alias)
  ).options(
      sqlalchemy.orm.contains_eager(
          manager_alias.user.of_type(user_alias)
      ).load_only(
          user_alias.id,
      )
  )
  
  
  q3 = session.query(
      manager_alias
  ).options(
      sqlalchemy.orm.joinedload(
          manager_alias.user.of_type(user_alias)
      ).load_only(
          user_alias.id,
      )
  )
  
  for label, query in (
      ('without_aliases', q1),
      ('with_aliases_contains_eager', q2),
      ('with_aliases_joinedload', q3)
  ):
      if str(query).count('do_not_load'):
          print('Warning: {0} contains do_not_load: {1}'.format(label, query))
  ```
  
  
  ### Error
  
  ```
  Warning: with_aliases_eager_load contains do_not_load: SELECT user_1.id AS user_1_id, resource_1.id AS resource_1_id, resource_1._type AS resource_1__type, resource_1.do_not_load AS resource_1_do_not_load, manager_1.id AS manager_1_id, manager_1.parent_id AS manager_1_parent_id 
  FROM manager AS manager_1 LEFT OUTER JOIN (resource AS resource_1 JOIN user AS user_1 ON resource_1.id = user_1.id) ON user_1.id = manager_1.parent_id
  Warning: with_aliases_joinedload contains do_not_load: SELECT manager_1.id AS manager_1_id, manager_1.parent_id AS manager_1_parent_id, user_1.id AS user_1_id, resource_1.id AS resource_1_id, resource_1._type AS resource_1__type, resource_1.do_not_load AS resource_1_do_not_load 
  FROM manager AS manager_1 LEFT OUTER JOIN (resource AS resource_1 JOIN user AS user_1 ON resource_1.id = user_1.id) ON user_1.id = manager_1.parent_id
  ``` 
  
  ### Additional context
  
  _No response_