While reading "Advanced Programming in the Unix Environment", it appears to me that those two functions do exactly the same thing.
They both return the same result to the calling process.
So why bother design two of them?
tcgetsid returns the process group ID of the session for a terminal, denoted by a file descriptor.
getsid returns the same for a process, denotes by its PID.