Could they potentially "eclipse attack" by hiding some blocks to other nodes
Theoretically if the attacker manages to isolate or "eclipse" another node, then that node is going to only receive what the attacker is feeding it. The biggest problem is going to be privacy related since the attacker will see all the transaction that the victim's node "generates" so it can figure out which addresses belong to it. It can also censor them by preventing it from being propagated.
Technically they should be able to carry out a 51% attack with only minimum hashrate that would allow the attacker to mine at least a block. But it has to be a targeted attack and it is easily detected. It would be something like this:
The attacker sends the victim a transaction paying them but creates and sends a competing tx that double spends the same coins to the rest of the network. Then the attacker has to mine a block that includes the first tx and broadcast it to the victim. The victim sees it as confirmed and for example releases the fiat or physical goods that were bought.
It can be easily detected as the victim would see their node being stuck for a long time without receiving any blocks (it takes the attacker a lot of time to mine a block due to having low hashrate). And they can manually intervene and fix it by for example manually adding a peer's IP address to connect to.
or would simply using something like Bitnode which ranks nodes solve this problem? But I reckon the nodes in Bitnode could still refer malicious nodes to new nodes; unless I'm not informed properly on how Bitcoin's peer-to-peer network works.
Bitnodes website is centralized and it could actually be used to carry out such an attack if we relied in it.
In Bitcoin's P2P network, your node would first connect to a DNS seed server (there are a handful of them) that will feed them a list of most reliable bitcoin full nodes. Then it will slowly start building its own list of peers from what it receives over time.
Since your node can initiate connections and it selects peers from its own list, it is very difficult to isolate it.