Restore was running for 16 hours and failed eventually with the following:
Operation completed with errors.
A transport level error has occurred when receiving results from the server (Provider: TCP Provider, error: 0 - The semaphore timeout period has expired.)
Another attempt to restore the database with verbose logging shows the following messages from the log file:
13:22:14.663 4608 Main CSLSEngine::TransferData Get command return code: 0x80770003 command code: 0 size: 65536
13:22:14.663 4608 Main CSLSEngine::TransferData Engine timeout
Checking Task Manager and it seems like there is no activity going on for the SQLLiteSpeed64.exe binary at all.
Database being restored is the default database for the SQL Server service account.
Modify the SQL Server service account to use 'master' as the default database and restart the restore operation.