There are no overall "perfect" settings, so you need to try for yourself.
Since your upload speed is a limiting factor here, you might want to test that first.
Do some upload tests (try different online speed tests) and then use ~75% of the achieved upload bitrate for your stream (because even with CBR the bitrate is slightly fluctuating and your ingame ping will get really bad, when you use almost all of the upload speed for your stream).
Example: Let's say you achieved an average upload speed of 3584 Kbps on those tests. So you can start your test by using 2668 Kbps for the stream. This could be split into 2560 Kbps for video and 128 Kbps for audio.
If the ingame ping or lag is too bad, decrease stream bitrate.
One aspect, where you can slightly influence the quality is the encoder.
As x264 can achieve better compression, then NVENC and you got many CPU threads, I would recommend to use x264 instead of NVENC.
"Very Fast" preset is the default, but the Ryzen 1700 should be able to run "faster" or even "fast". The slower the preset, the better the compression quality, but the higher the CPU load. Just make sure, the CPU load is always below ~80%.
edit: for Twitch you should select constant bitrate (CBR) and a key-frame interval of 2 secondes.
With the limited upload speed, I can tell you that many games will look very blurry/pixelated in 900p 60fps, even with a CPU taxing x264 preset like"fast" or even "medium", as soon as there is movement/action going on. The more pixels are changing between frames (especially bright or high contrast areas), the worse it will be.
So games like hearthstone or league of legends might look okay, as they can be compressed easy. Shooters like PUBG, Fortnite or games like ARK/Atlas will look bad.
To reduce the pixelation/blurriness You have to decide, if you want to trade some sharpness/detail or fluidness. Reducing stream resolution to 720p will slightly improve the compression artifacts, but small details like texts / gui elements will get harder to read in the stream. Reducing framerate to 30fps instead would be my recommendation. It will noticeable reduce CPU load (so maybe you can select a better encoding preset) and the compression artifacts will improve. 90% of viewers usually don't even notice or care, if the stream has 30 or 60fps. It's usually the streamer himself who thinks "30fp is way to low for a good stream", especially if he checks his stream/recoding directly after he was playing that game with >100fps. But viewers don't have input lag..they just consume and many of them do so in a small window on a second monitor or on a mobile phone and they will prefer a clean 30fps stream over a blurry 60fps mess.