In short, the output of df/diskutil is the one which is interesting if you bother about free space left, while du says you something meaningful if you bother about transfering files somewhere else. The difference "df-du" is basically non-usable space occupied due to the layout of your filesystem.
See for instance http://linuxshellaccount.blogspot.com/2008/12/why-du-and-df-... or any result for a web search "difference of du Vs df"