Archiving process not running fast enough
Doing an insert from the source side through a linked server is problematic for performance.  Each row inserted into the target is inserted via a discrete INSERT statement inside a cursor operation.  i.e. if you are inserting 12,000 rows into the target, SQL Server will actually execute the insert 12,000 times, once for each row.

If you re-write the archive process so it runs from the destination server, it will be much faster.

As an example from your execution plan, rewrite this:

INSERT INTO @MessageEvent (ID, DateTime) 
SELECT TOP (1500) ID, TimeStamp 
FROM ConnectAPI.dbo.MessageEvent (NOLOCK) 
ORDER BY ID


and run it from the destination server, like this:

INSERT INTO ConnectAPI.dbo.MessageEvent (ID, DateTime)
SELECT TOP(1500) ID, TimeStamp
FROM [SourceServer].ConnectAPI.dbo.MessageEvent
ORDER BY ID


Notice I left the NOLOCK query hint out.  You may want to make sure you understand the implications for partial reads and/or duplicate reads under READ UNCOMMITTED isolation, which is the isolation level used with the NOLOCK hint.

I wrote a blog post at SQLServerScience.com with minimally complete, verifiable example code showing how a simple insert of 800,000 rows from a source server to a destination server takes over 7 minutes when executed from the source server, and only 11 seconds when executed from the destination.