False error notifcation (double spent) 'code' => -4, 'message'
The reason for this could be that you spend a long chain of unconfirmed transactions. In 0.14, Core has improved this behaviour and added an startup option called -walletrejectlongchains (needs to be enabled, default is off).

Otherwise your wallet might spend long chains of unconfirmed coins but your node/mempool won't accept them.
Also, have a look at the -limitancestorcount settings and consider reading the pull request here