The original title is "How to understand the hardlinks field of a directory", but in the body you're asking about total 16 which (as we will see) is not "the hardlinks field". The title is a misunderstanding.
The POSIX specification of ls states that:
If any of the -l, -n, -s, […] options is specified, each list of files within the directory shall be preceded by a status line indicating the number of file system blocks occupied by files in the directory in 512-byte units if the -k option is not specified, or 1024-byte units if the -k option is specified, rounded up to the next integral number of units, if necessary. In the POSIX locale, the format shall be:
"total %u\n", <number of units in the directory>
But in Ubuntu your ls is GNU ls that deviates from POSIX [emphasis mine]:
For each directory that is listed, preface the files with a line total blocks, where blocks is the file system allocation for all files in that directory. The block size currently defaults to 1024 bytes, but this can be overridden […].
In your cases each listed file was a directory that reported 4096 as its size (note it's the size of the respective directory as a file, not the total size of files inside). This means each listed directory takes exactly four 1024-byte blocks. In the first case there were four of them on the list, hence 4x4= total 16; in the second case there were six, so 6x4= total 24.
You can make GNU ls obey the POSIX specification by setting the POSIXLY_CORRECT environment variable. AFAIK the value does not matter, it may even be empty, it's the existence of the variable that counts. Examples:
POSIXLY_CORRECT= ls -l
POSIXLY_CORRECT=whatever ls -la
In the directory in question these commands should print total 32 and total 48 respectively.
If anything can be called "the hardlinks field", it's what POSIX calls "number of links". In your examples it's 19 for farah, 40 for hussain, 6 for . etc.