S1 - yes, that is not very powerful. Furthermore, on an S1, I believe you can be a victim to "noisy neighbours". That is, other databases on the same physical machine may add load that affects your database.
I have an S1 database myself (for test purposes only), and I've noticed that a test case I have for a certain SQL feature runs for several minutes on the S1, while it completes in maybe 30 seconds on my desktop.
I have two serverless General Purpose, and they certainly perform better. Except when they start up of course. But if you are running some sort of web commerce, you probably don't want serverless. Serverless is great for test/dev that you only use occasionally, but for something that is on all the time, a provisioned instance is better.
And, yes, the price tag will be stiffer. I only have a credit that comes with my VS subscription, and if I leave the serverless databases on, I outrun the credit before the month is over.
Finally, yes, when I say 90 seconds I mean compile times. That is a blocking event, correct?
Normally, "blocking" refers to when you cannot access a row, because is blocked by another process. In Azure SQL Database, the default setting is READ_COMMITTED_SNAPSHOT, which means that readers and writers cannot block each other. But a writer can be blocked by another writer.
16 seconds in compile time for that relatively simple query is still quite excessive. Unless these ProcessUpdate and ExternalProcess are view of big complexity.