@brandon, I like your approach using tasks for table locking while inserting.
You can take this step by using Snowflake Pipes to load from the internal stage. CREATE PIPE docs
This way, multiple processes can put files through an internal stage, and Snowflake PIPE will insert data into tables. This approach should have lower latency than the task approach.
CREATE PIPE mypipe2
AS
COPY INTO mytable(C1, C2)
FROM (SELECT $5, $4 FROM @mystage)
FILE_FORMAT = (TYPE = 'JSON');