ElasticSearch restart spending long time
That the replicas recover slowly is OK. When the primary shards are recovered, the cluster is usable and should be yellow. It can accept queries, and will give priorities to this, throttling other operations like writing replicas.
The two links you cite are helpful. When a node is gone, the cluster assumes it's broken and starts to reshuffle like crazy. This doesn't make sense when a node is gone for short restart, or a bit late. In these cases the settings and disabling allocation helps. Also, newer releases wait a bit (https://www.elastic.co/guide/en/elasticsearch/reference/current/delayed-allocation.html).
The link about the synced flush is also a good one. This means faster rebuild of the replicas. In my experience, it's not much faster, though.