As CreateTransaction is called twice, once to compute the fee, once to send the transaction, I wonder if the randomization inside CreateTransaction (the knapsack algorithm) won't give trouble here. It may pick a different set of inputs the second time and thus come up with a slightly different suggested fee.

I'm not sure how much of a problem this is in practice.