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