Poor in what way? You should be able to get literally the same information from RPC commands, and can write a script to get the information by making a series of RPC calls to feed in whatever information you are looking for into a database.
Bitcoin Core RPC missing lots of features compared with Blockexplorer API (e.g. blockchair.com).
I don't recall Bitcoin Core have feature such as address index, built-in filter and external information which isn't on blockchain (e.g. BTC price, pool hashrate, mempool history).
You would use a node's RPC function to programmatically get each confirmed transaction, along with what block each transaction was confirmed in, and you can then make queries as to the balance of each address as of whatever date (as of whatever block) you need the information for. You obviously would be unable to get any historical information about the mempool, but you could also periodically programmatically query mempool related RPC commands and store this information into a database.
we need a simple balance request ...address/balance but lots of them...no detailed info is needed...in that context (considering that blockchair API charges 500$ a month for 50000 requests a day) wouldn't a separate Node be better?
Yes, your best bet is to have a node and a (managed) relational database that you store information about each block/transaction in.
You would first create a full node, download the entire blockchain, and then use RPC commands to get the inputs and outputs of each transaction contained in each block and put this information into a relational database. You can then query the balance of any address as of the current date, or any date you need the balance on.
You can do this yourself, hire someone to do this for you. If you want to do this yourself, but are not quite sure how to get started, there is a kaggle
dataset of the bitcoin blockchain, and on the dataset page, there is a link to github repo that appears to claim to be able to get an ETL pipeline for the bitcoin blockchain setup (I have not looked at the code, and cannot vouch for anything in the repo).