reposition-window calls beginning-of-defun to compute the window boundaries.
So you get an infinite recursion when calling reposition-window from c-beginning-of-defun.
You can add the following guard for avoiding that recursion:
(defvar c-beginning-of-defun-after-hook nil
"Functions to be run after `c-beginning-of-defun'.")
I have no clue why yours didn't work, maybe use-package is not correctly identifying that it should attach to the 'org-mode-hook. However, I managed to add my own hook to enable visual-line-mode, in the other alternative way documented to insert hooks:
;; Specify my hook to add to org-mode-hook (remove the -hook suffix):
:hook (org-mode . (...