With your hardware I would expect to get a mean logged-in list/latest time of around 150ms app, 80ms SQL.
I’d start with 12 workers and see how it behaves with that. The best thing you can do is track metrics; if you want to know if you should add more workers, check to see if requests are getting queued waiting for app workers.
Are you tracking the metrics that Discourse itself exports via the prometheus exporter? These will give you a good view on how the instance is performing, overall.
What are performance numbers like for anonymous and regular (not admin) users?