Ничего удивительно в том нет, что разные по значению слова могут быть похожими по произношению.
Более того, есть разные по значению слова, которые совершенно одинаково произносятся, а иногда и одинаково пишутся (см. омонимы).
То есть, это бывает, если это древние слова, произношение которых со временем несколько изменяется, или когда слова заимствуются из разных языков и начинают произноситься на русский манер.
<hr />
Теперь об этимологии слов в вопросе.
Казна - от тюркской формы *хазна*, *хазина*, *казна* (*"сокровищница"*) арабского слова *хазина* - *сокровище*. Появилось в период татаро-монгольского ига. Впервые встречается в грамоте Дмитрия Донского 1389 года.
Ранее на Руси "казна" называлась "скотницей" (от "скот" - "деньги, подать, богатство". Животные и меха служили формой денег).
Казнь - старославянское слово - "наказание", "распоряжение". Есть версия, что происходит от вышедшего из употребления глагола "кАти" (наказывать) с использованием церковно-славянского суффикса "знь" (сравни: "козни" от глагола "ковАть", "жизнь" от "жить", "болезнь" от "болеть", "боязнь" от бояться).
Князь, княжна - древнее общеславянское заимствование, восходит к прагерманскому "кёниг" (глава рода, старейшина, король, вождь). У скандинавов: конунг. Княжна - незамужняя дочь князя - образовано от "князь".
В древности слово писалось немного по-другому: через ер и йотированный малый юс: