If they're distinct changes on a single branch (so they're related, but
make sense as individual commits in the final repo) then #2. Gerrit
might warn you, but I think it will let you do it as long as you confirm
you mean it.
One push with multiple commits should work just fine.
Each commit (with its separate Gerrit ChangeId) will create a separate
patch in Gerrit.
I suggest that changes related to specific APIs (e.g., tvb_length() -->
tvb_captured_length()) be grouped in commits so as to minimize the
effort required to review and submit the patches in Gerrit.