I don't think that this can be achieved from a terminal, but in GUI mode you could try this:

    (define-key input-decode-map [?\C-i] [C-i])
    (global-set-key (kbd "<C-i>") 'indent-region)

I do the same thing with `C-m` so that it can be distinguished from `RET`

**EDIT:**

The following should work whether you are in GUI or TTY mode:

    ;; Unbind <C-i> from the TAB key and bind it to indent-region.
    ;; Since TAB and <C-i> cannot be differentiated in TTY emacs,
    ;; the workaround is to conditionally bind TAB to indent-region
    ;; when there is an active region selected.
    (if (window-system)
    	(progn
    	  ; IF we are not in a TTY, unbind C-i from TAB
    	  (define-key input-decode-map [?\C-i] [C-i])
    	  ; ... and remap it to indent-region
    	  (global-set-key (kbd "<C-i>") 'indent-region))
      (progn
    	; ELSE IF we are in a TTY, create a replacement for TAB
    	(defun my/tab-replacement (&optional START END)
    	  (interactive "r")
    	  (if (use-region-p)
              ; IF active region, use indent-region
    		  (indent-region START END)
            ; ELSE IF no active region, use default tab command
    		(indent-for-tab-command)))
    	; Bind our quick-and-dirty TAB replacement to the TAB key
    	(global-set-key (kbd "TAB") 'my/tab-replacement)))

It is not pretty, but it seems to do the job.  I welcome any refinements or edits to this code as necessary.