Clean and speed up applyTransaction

- Remove duplicate database calls once the accountState is retrieved 
  (noticable increase in speed)
- Reuse receiverAddress in multiple locations
- Fewer times casting byte[] to BigInteger
- Avoid duplicate code to invoking Program and VM
I can make a quick temporary fix to test (tx.isContractCreation() || code != null) before executing the program. That should be good enough to merge this pull-req.