MySQL - Deleting old data; Select with index taking time
(This does not address your question directly; rather it addresses your goal of deleting old records.)

Plan A

You are talking about DELETEing "old" records.  Assuming you are removing "all" the old records, then PARTITIONing is an excellent way to do that.  PARTITION BY RANGE(TO_DAYS) by weeks.  Use DROP PARTITION (instantaneous and non-invasive) to get rid of the oldest week and REORGANIZE PARTITION to add a new partition.  Details.  It will take some downtime to initially partition your 50-million-row table.

Plan B

Alternatively, you can continually walk through the table, using the PRIMARY KEY for keeping track of where you are.  Find the 1000th row hence &amp; delete any 'old' records.  Repeat.  Details.  And it does not need an index on lastseen; removing it could be an efficiency bonus.

Since the table is clustered on the PK(id), walking through the table is very efficient -- very little I/O for each step.  (For unknown reasons, your original solution was more I/O-bound than it should have been.)