At the moment SFML does not modify the contents of the packet when sending it. The reason it is not passed as a const reference is because of the possibility for the user to derive from sf::Packet and implement their own transformation code (such as compression, encryption etc.) in onSend(). In that case it is desired that the packet be modified while sending although you would have to transform new data every single send instead of just reusing the same transformed data for multiple sends.
If you are really paranoid that your packet might be modified while iterating through all sockets, you can just explicitly pass a copy. It might not be as fast as passing by reference, but whatever makes you sleep better...
sf::Packet packet;
packet<<"hi";
for(sf::TcpSocket & s : sockets)
s.send(sf::Packet(packet));//this is ok