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
nice work: in general check that applyProgramResults 
is differently work for init run and general run 
the last parameter true/false will tell