Don't create empty transactions when reading corrupted wallet

The current transaction loading code is not exception safe.
An exception during deserialization causes an empty transaction
to be left behind in the wallet.

Fix this by building the transaction separately and adding
it only to the wallet at the end.

Fixes #3333.
[Qt] add missing lock in walletmodel
[Qt] 2 minor translation changes
[Qt] small paymentserver header cleanup
Merge pull request #3540

57d8e3f [Qt] add missing lock in walletmodel (Cozz Lovan)
Merge pull request #3541

c704532 [Qt] small paymentserver header cleanup (Philip Kaufmann)
Merge pull request #3538

81bad8b [Qt] 2 minor translation changes (Philip Kaufmann)
Merge pull request #3426

16ec904 Don't create empty transactions when reading corrupted wallet (Wladimir J. van der Laan)