Я думаю, что ваше первое усилие, fsstayontop, является лучшим вариантом.
Проблема с отображением перед другими приложениями может быть невозможна, поскольку вы действительно используете функцию Windows, а не нечто уникальное для Delphi.
Насколько я помню, можно вручную установить порядок Z, но это утомительно или невозможно в большинстве приложений.
Если ваш диалог не такой большой, чтобы скрыть другие приложения, его можно переместить, и пользователи по-прежнему могут получать доступ к другим приложениям, не взаимодействуя с вашим диалогом. Кажется, не так уж плохо.