How do Bitcoin nodes know where to send new transactions and blocks to? I am researching Bitcoin; what I can't find much information on though is how the P2P network itself operates. For example, BitTorrent uses a DHT protocol that allows for node discovery and calculating distances between nodes etc.

So if a Bitcoin client wants to do a transaction, how does it know which IP address to connect to in order to announce it?

And how does the node that the transaction gets sent to know which other nodes it needs to connect to, and so on?
Bitcoin is a so-called gossip network. They announce any new object to all of their peers (just the hash of the data). If the peer doesn't know the object yet, it asks for the full object. So it's certainly not a DHT or any smart organisation of data: every (full) node (eventually) learns about every block and transaction. They have to, there is no other way of validating history otherwise.

As for how the client discovers peers, see How do Bitcoin clients find each other?