Is there a way to distinguish miner nodes from other nodes?
Yes, but only in a probabilistic way: If you run many different nodes and try not to leave any node in the network that isn't connected by any of your nodes, you'll be able to track and visualize the relaying of the new blocks. After a while, you'll have the whole network graph, looking at which might obviously show the miners.

By the way, using the same method, it's possible to find the authors of transactions, which is what Dandelion is aiming to solve.