MySQL stuck on INSERT INTO ... SELECT
Give this formulation a try:
INSERT INTO `hlh_record_status_submission`
SELECT rse.* FROM `hlh_record_status_events` AS rse
    JOIN ( SELECT MIN(id) AS min_id
              FROM `hlh_record_status_events`
              WHERE status IN (21,24,31,40)
              GROUP BY record_id
         ) AS x  ON min_Id = rse.id;

and replace INDEX(status) with
INDEX(status, record_id, id)

Also, you should really change all your tables to InnoDB.
The subquery (a &quot;derived&quot; table) will be faster because of the index starting with what is in its WHERE clause and because that index is &quot;covering&quot;.  The JOINing to the outer part is (I assume) using the PRIMARY KEY(id) making that efficient.
Historically, the construct IN ( SELECT ... ) has been notoriously inefficient, so I try to avoid it.  JOIN and EXISTS ( SELECT ... ) are sometimes viable alternatives.
More discussion of building optimal indexes:  http://mysql.rjweb.org/doc.php/index_cookbook_mysql