If you know how many brokers should be in the cluster, you can use the AdminClient to list out all the brokers that the Kafka Controller knows about
using (var adminClient = new AdminClient(new AdminClientConfig { BootstrapServers = brokerList }))
{
var meta = adminClient.GetMetadata(TimeSpan.FromSeconds(20));
Console.WriteLine($"{meta.OriginatingBrokerId} {meta.OriginatingBrokerName}");
meta.Brokers.ForEach(broker =>
Console.WriteLine($"Broker: {broker.BrokerId} {broker.Host}:{broker.Port}"));
Source - https://github.com/confluentinc/confluent-kafka-dotnet/blob/master/examples/AdminClient/Program.cs
However, you really only would need to check the subset of brokers where a topic replicas exist (i.e. describe the topic instead and check the replica count), and that there is a Controller available at all (which there would be if the AdminClient returned data)... The Producer and Consumer already provide exception details for when the connection isn't available to be made as well.