I have a similar task that takes a lot of data from csv files and then does some operations with that and inserts to DB.
So we parse the data in the frontend and then run some preparation to the data and then send that to a method where is processed.
We saw some large response times and high server resources use, so we ended running the data crunshing and DB operations on a serveless function that is called from the method, if you dont need to wait for the response from the function you can Meteor.deffer the function call or you can send the task to a queue and let the serverless function run it.
If you need to have a response from this operation you can wait for the response from the serverless function or create a collection that stores the tasks and update that task with the error or success message from the serverless function.
this.unblock() should make the method not to block any other method calls from the same user, but if this method is resource intensive it can make your app fell slower for some time. Im not sure but I think by default you cant unblock publications, you need a package for that. But im also not sure if methods block subscriptions from the same user, maybe someone else can share that if they know.
Hope this helps.