Unlike cryptocurrencies like Bitcoin, the Ethereum transaction format only allows for exactly 1 destination address. There is no way to achieve this without using a smart contract. I'm not sure why you want to avoid using a smart contract.
Something you can try is a smart contract that, when deployed, immediately performs the transfers and then destroys itself. For example:
pragma solidity ^0.4.24;
contract Multisend
{
constructor(address[] memory destinations, uint256[] amounts) public payable
{
require(destinations.length == amounts.length);
for (uint256 i=0; i<destinations.length; i++)
{
destinations[i].transfer(amounts[i]);
}
selfdestruct(msg.sender);
}
}
Here you can see it in action:
https://ropsten.etherscan.io/tx/0xa03a304f1ef68f56874c1683d9f1e4bccb59fcb1634998fb861a16496f03abd3